@@ -87,20 +87,17 @@ class _Observation<T, R> extends Observation<R> {
8787
8888 late final int _observablesLength;
8989 late final Set <int > _emitted;
90- late final List <T ?> _latests ;
91- late final Disposable _disposable ;
90+ late final List <T ?> _latestItems ;
91+ late final List < Disposable > _sourceObservations ;
9292
9393 @override
9494 void init () {
9595 _observablesLength = _observables.length;
9696 _emitted = < int > {};
97- _latests = List <T ?>.filled (_observablesLength, null );
98- final sourceObservations = Iterable <Disposable >
97+ _latestItems = List <T ?>.filled (_observablesLength, null );
98+ _sourceObservations = Iterable <Disposable >
9999 .generate (_observablesLength, _observeIndexed)
100100 .toList ();
101- _disposable = Disposable .combine (
102- disposables: sourceObservations
103- );
104101 }
105102
106103 Disposable _observeIndexed (int index) {
@@ -113,9 +110,9 @@ class _Observation<T, R> extends Observation<R> {
113110 if (! _emitted.contains (index)) {
114111 _emitted.add (index);
115112 }
116- _latests [index] = data;
113+ _latestItems [index] = data;
117114 if (_emitted.length == _observablesLength) {
118- final items = List <T >.from (_latests , growable: false );
115+ final items = List <T >.from (_latestItems , growable: false );
119116 final combinedItem = _combiner (items);
120117 emit (combinedItem);
121118 }
@@ -124,6 +121,8 @@ class _Observation<T, R> extends Observation<R> {
124121
125122 @override
126123 void dispose () {
127- _disposable.dispose ();
124+ for (final observation in _sourceObservations.reversed) {
125+ observation.dispose ();
126+ }
128127 }
129128}
0 commit comments