草庐IT

stream - flutter : stream two Streams into a single screen?

coder 2023-05-09 原文

我有两个流从两个不同的 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);
}

我的屏幕有一个流构建器

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。 我可以在流中获取流吗?在处理两个流时我是否遗漏了任何东西。我不想从monthoutstream 构建任何小部件,但想检查其中的数据。

最佳答案

如果需要,您可以嵌套 StreamBuilder。没有什么能阻止您执行以下操作:

StreamBuilder(
  stream: stream1,
  builder: (context, snapshot1) {
    return StreamBuilder(
      stream: stream2,
      builder: (context, snapshot2) {
        // do some stuff with both streams here
      },
    );
  },
)

如果这对您有意义,另一种解决方案是:流被设计为可合并/转换。您可以制作第三个流,它是后面两个流的合并。

对于您想要使用的复杂流操作来说是理想的 rxdart因为它提供了一些有用的转换器。

使用 rxdart,两个 Observable(它们是 Stream 的子类)的融合如下:

Observable<bool> stream1;
Observable<String> stream2;

final fusion = stream1.withLatestFrom(stream2, (foo, bar) {
  return MyClass(foo: foo, bar: bar);
});

关于stream - flutter : stream two Streams into a single screen?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51880330/

有关stream - flutter : stream two Streams into a single screen?的更多相关文章

  1. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  2. ruby-on-rails - 如何让 ActionController::Live streaming 与 Thin 一起工作? - 2

    问题你能用thin吗?与ActionController::Live实现服务器端事件(SSE)和长轮询?如果是,怎么办?上下文虽然标题是HowtogetRails4ActionController::LivestreamingworkingwithThinandRuby2?AndhowdoThinandPumascalewithlivestreaming?的重复,OP通过问两个问题混淆了水域,这个问题从未得到回答。许多其他帖子建议您可以使用thin对于服务器端事件(sse),如果您通过execthinstart--threaded启动它:DoesHerokusupportActionC

  3. Flutter 环境变量配置和flutter doctor中的错误解决 - 2

    一、环境变量右键点击我的电脑-属性:然后找到环境变量 1.Android的SDK不在C盘的话需要额外配这个到用户环境变量:ANDROID_HOMED:\AndroidSDK2.然后在系统变量:Path中添加一条这样的值        D:\Flutter\flutter\bin             这个值写flutter包解压的实际地址即可 3.在系统变量中添加两个镜像变量:        变量名:FLUTTER_STORAGE_BASE_URL      变量值:https://storage.flutter-io.cn        变量名:PUB_HOSTED_URL      变量

  4. ruby-on-rails - 是什么导致了这个 rails ioerror closed stream? - 2

    我有一个Rails应用程序,在开发模式下运行(使用sqlite数据库)。该应用程序的目的是允许用户通过Java客户端上传文件。如果用户要上传一个文件夹,会递归上传里面的所有文件。如果用户要上传文件,文件将正常上传。这是我收到的错误:IOErrorinUploadedFilesController#newclosedstream这是应用程序跟踪:/usr/lib/ruby/1.8/tempfile.rb:167:in`close'/usr/lib/ruby/1.8/tempfile.rb:167:in`callback'/var/lib/gems/1.8/gems/activesuppo

  5. Two-Stream Convolutional Networks for Action Recognition in Videos双流网络论文精读 - 2

    Two-StreamConvolutionalNetworksforActionRecognitioninVideos双流网络论文精读论文:Two-StreamConvolutionalNetworksforActionRecognitioninVideos链接:https://arxiv.org/abs/1406.2199本文是深度学习应用在视频分类领域的开山之作,双流网络的意思就是使用了两个卷积神经网络,一个是SpatialstreamConvNet,一个是TemporalstreamConvNet。此前的研究者在将卷积神经网络直接应用在视频分类中时,效果并不好。作者认为可能是因为卷积神经

  6. ruby-on-rails - cucumber 测试失败,返回 `stream closed (IOError)` - 2

    我们目前正在将我们的Rails应用程序升级到Rails4。在3.2中,我们的Cucumber(1.3.17)测试运行良好(如果可悲地缓慢),使用Capybara(2.4.4)、Poltergeist(1.5.1)和PhantomJS(1.9.8)引擎盖下。但是在4.0.12和4.1.8中,我们在运行中的随机点得到一个streamclosed(IOError):streamclosed(IOError)/var/lib/jenkins/.rvm/gems/ruby-2.1.5@tallama-integration/gems/cucumber-1.3.17/lib/cucumber/fo

  7. ruby-on-rails - 服务器发送的事件和 Rails Streaming - 2

    我正在试验Rails4ActionController::Live和ServerSentEvents。我正在使用MRI2.0.0和Puma。就我所见,每个连接的客户端都与服务器保持事件连接。我想知道是否可以在不保持所有响应流运行的情况下利用SSE。Puma使用线程管理多个连接,我想当前连接数是有限制的。如果我想支持成千上万的客户注册到我的Rails应用程序以参加SSE事件的真实场景怎么办?有没有例子?此外,我通常在nginx反向代理后面运行Rails应用程序服务器。它需要任何特定的设置吗? 最佳答案 SSE的构建方式是客户端打开到服

  8. ruby - Ruby 中有类似 null-stream 的东西吗? - 2

    我可以使用:File.open('/dev/null','w')在Unix系统上,但如果有Ruby方法来实现这一点,我想使用它。我只是在寻找一个I/O流,它会立即“丢弃”所有写入,有点像空对象。 最佳答案 如果你想要流的完整行为,最好的可能是使用:File.open(File::NULL,"w")请注意File::NULL是Ruby1.9.3的新功能;你可以用我的backportsgem:require'backports/1.9.3/file/null'#=>Won'tdoanythingin1.9.3+File.open(Fil

  9. javascript - 运行 Gulp 会抛出错误 "Cannot find module ' ./lib/_stream_writable.js'” - 2

    我正在构建一个关于Root'sSageWordPressTheme的主题.设置并运行必要的命令后。每当我运行Gulp时,它都会抛出以下错误module.js:338throwerr;^Error:Cannotfindmodule'./lib/_stream_writable.js'atFunction.Module._resolveFilename(module.js:336:15)atFunction.Module._load(module.js:278:25)atModule.require(module.js:365:17)atrequire(module.js:384:17)a

  10. Java Streams API 的 Javascript 等价物 - 2

    我喜欢Java8的流式API。有很多有用的中间和终端方法来转换和收集流。我说的是像distinct()这样的中间方法或像collect()这样的终端方法。我发现CollectorAPI特别有用,可以将流减少到深度分组映射。Java流API的javascript等价物是什么?我知道有map、filter和reduce等基本功能,但是没有找到javascriptnative提供的更通用的接口(interface)来查询或对集合中的数据进行分组。是否有一些生产就绪的库可以匹配JavaStreamingAPI? 最佳答案 java8stre

随机推荐