颤动:将两个Streams流式传输到一个屏幕上?
发布时间:2020-12-14 14:51:42 所属栏目:百科 来源:网络整理
导读:我从两个不同的api中获取了两个流. StreamMonth get monthOutStream = monthOutController.stream;StreamMySchedule get resultOutStream = resultController.stream; 我在应用程序的两个不同状态下获取这些数据,结果是在用户的某些事件之后的开始和几个月.
我从两个不同的api中获取了两个流.
Stream<Month> get monthOutStream => monthOutController.stream; Stream<MySchedule> get resultOutStream => resultController.stream; 我在应用程序的两个不同状态下获取这些数据,结果是在用户的某些事件之后的开始和几个月. MyScheduleBloc(){ initialData(); } Future initialData() async { MySchedule mySchedule = await myScheduleViewModel.importMySchedule(now.id); resultController.add(mySchedule); } 我的屏幕有一个streambuilder Widget build(BuildContext context) { final webCalenderBloc = WebCalenderBloc(); return StreamBuilder( stream: webCalenderBloc.resultOutStream,builder: (BuildContext context,snapdata){ if(!snapdata.hasData){ return Center( child: CircularProgressIndicator(),); } return body(snapdata.data); },); } 由于主要的小部件构建方法将带有resultoutstream的StreamBuilder小部件作为流.我在哪里获取另一个流monthoutStream. 解决方法
如果需要,您可以嵌套StreamBuilder.没有什么能阻止您执行以下操作:
StreamBuilder( stream: stream1,builder: (context,snapshot1) { return StreamBuilder( stream: stream2,snapshot2) { // do some stuff with both streams here },); },) 如果这对你有意义,另一个解决方案是:Streams被设计为可合并/转换.您可以创建第三个流,它是两个后续流的合并. 理想情况下,对于复杂的流操作,您需要使用rxdart,因为它提供了一些有用的变换器. 使用rxdart,两个Observable(它是Stream的子类)的融合如下: Observable<bool> stream1; Observable<String> stream2; final fusion = stream1.withLatestFrom(stream2,(foo,bar) { return MyClass(foo: foo,bar: bar); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |