質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Q&A

1回答

1064閲覧

StreamBuilderで初回のsink.add()以降builderが反応しない

kureta

総合スコア18

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

0グッド

0クリップ

投稿2021/04/01 11:51

前提・実現したいこと

Listの要素数StreamController.sink.add(Widget)し、Column()で画面に表示したい。

発生している問題・エラーメッセージ

あるList<data>がありこのリストをforEachでループさせ中でWidgetを作成しています。
ループ内では作成したWidgetをStreamController.sink.add(Widget)しているのですが、
なぜか一度しかStreamBuilderのbuilderが呼ばれません。

※ループを複数回行っていることは確認済み

該当のソースコード

StreamBuilderを生成しているソース

dart

1class _xxxState extends State<xxx> { 2 3 4 void initState() { 5 _xxx(); 6 _gridViewStreamBuilder = StreamBuilder<Widget>( 7 stream: _imageGetStream.stream, 8 initialData: CircularProgressIndicator(), 9 builder: (context,snapshot) { 10 switch(snapshot.connectionState) { 11 case ConnectionState.done: 12 case ConnectionState.waiting: 13 case ConnectionState.none: 14 print(snapshot.connectionState); 15 break; 16 case ConnectionState.active: 17 print(snapshot.connectionState); 18 _gridViewsByDate.add(snapshot.data); ←ここが複数回sink.add()しているにもかかわらず1度しか呼ばれない 19 break; 20 default: 21 print(snapshot.connectionState); 22 break; 23 } 24 return SingleChildScrollView( 25 child: Column( 26 mainAxisSize: MainAxisSize.min, 27 children: _gridViewsByDate, 28 ) 29 ); 30 } 31 ); 32 super.initState(); 33 }

sink.add()している箇所

dart

1void _xxx() { 2 list.forEach((key, value) { 3 gridView = StreamProvider<bool>(create: (_) => multiSelectStreamController.stream, 4 initialData: false, 5 child: xxxGridView() 6 ); 7 _imageGetStream.sink.add(gridViewByDate); 8 }); 9 }

だいぶ端折らせていただいていますがご確認のほどよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

sink.add()している _xxx()が、先に呼び出されているだけのように思います。

複数回sink.add()した後にStreamを見ても、最後にsink.add()した値しか見えないです。

投稿2021/04/12 18:00

satokei

総合スコア1217

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問