2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Flutterで複数のStreamをまとめて受け取る

Last updated at Posted at 2021-10-21

はじめに

一つの画面で複数のStreamを受け取りたいときに困ったので、調べた結果をまとめる。
結論から言うと、stream_transformをimportしてcombineLatestAllを使えば良い。

困ったこと

実現したい挙動

投稿一覧画面で、投稿一覧を表示。
ログインしているユーザが各投稿にお気に入りをしてる場合としていない場合で表示するアイコンを切り替える。

困ったこと

StreamとしてFirebaseから投稿一覧を取ってきつつ、同様にログインしているユーザがお気に入りに登録している投稿の一覧をStreamとして取得したい。
だが、StreamBuilderやFutureBuilderの中に入れるにしても、複数の処理を引数に取れないっぽいので、困った。

解決方法

stream_transformのパッケージを使う。
以下のように、Streamをまとめることができる。

Stream<Map<String, dynamic>> streamName() {
    return stream1().combineLatestAll([stream2, stream3()]).map((data) {
      return { "stream1": data[0], "stream2": data[1], "stream3": data[2] };
    });
  }

こうすれば、streamBuilderとかでstreamName()を入れてデータをまとめて受け取ることができる。

参照ページ

以下のような記事を見て、packageの存在を知った。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?