Flutter で setState-after-dispose クラッシュを避けるために dispose で StreamSubscription をキャンセルする方法
ユーザーが画面を離れた後も stream はイベントを発行し続け、その onData がすでに破棄された State に対して setState を呼び、Flutter は例外を投げます。subscription を保持し、super.dispose の前に dispose でキャンセルすれば、コールバックは死んだ widget の上で二度と発火しません。Flutter 3.44 向けの完全なパターンです。