Flutter WebのHot-RestartでStream.listenが多重化してしまう問題 – 開発日記(73)

デバッグ時に発生するListen多重化 2024/02/17

DBの処理周りを修正するなかで、やっかいな問題が発覚。

Firebase RealtimeDatabaseで特定項目の変化をlistenしているのだが、FlutterでHotReloadすればするほどlistenが多重化してしまうことが分かった。

まずそこに気づくまで時間がかかった。

dispose()でStreamを閉じても適切に破棄されないため、HotReloadの時にさらにListenしてしまうようだ。デバッグのとき何度もHotReloadすると、その回数分だけLitenが多重化してカオスになる。
これは辛い。

調べたがWebで開発する場合あまり明確な対応方法は無さそうで、都度Webページのリロード(F5)をしてやりくりするしかなさそう。

※2024/10/28時点で確認したところワークアラウンドのコメントは付いていますが、IssueとしてはOpenのままです


※開発日記は当時の記録をもとに作成し、必要に応じて加筆・補足しています

この記事はアイディア整理ソフト「idea Lane」の開発記録です

どなたでも、ユーザ登録だけで無料ですぐに使えます
テキストベースの思考整理ツール「idea Lane」


コメント

タイトルとURLをコピーしました