Fix to rx.trigger so that it checks for previous send to stream by set value
Showing
1 changed file
with
4 additions
and
2 deletions
@@ -67,6 +67,7 @@ mixin RxObjectMixin<T> on NotifyManager<T> { | @@ -67,6 +67,7 @@ mixin RxObjectMixin<T> on NotifyManager<T> { | ||
67 | } | 67 | } |
68 | 68 | ||
69 | bool firstRebuild = true; | 69 | bool firstRebuild = true; |
70 | + bool sentToStream = false; | ||
70 | 71 | ||
71 | /// Same as `toString()` but using a getter. | 72 | /// Same as `toString()` but using a getter. |
72 | String get string => value.toString(); | 73 | String get string => value.toString(); |
@@ -96,10 +97,11 @@ mixin RxObjectMixin<T> on NotifyManager<T> { | @@ -96,10 +97,11 @@ mixin RxObjectMixin<T> on NotifyManager<T> { | ||
96 | /// Widget, only if it's different from the previous value. | 97 | /// Widget, only if it's different from the previous value. |
97 | set value(T val) { | 98 | set value(T val) { |
98 | if (subject.isClosed) return; | 99 | if (subject.isClosed) return; |
100 | + sentToStream = false; | ||
99 | if (_value == val && !firstRebuild) return; | 101 | if (_value == val && !firstRebuild) return; |
100 | firstRebuild = false; | 102 | firstRebuild = false; |
101 | _value = val; | 103 | _value = val; |
102 | - | 104 | + sentToStream = true; |
103 | subject.add(_value); | 105 | subject.add(_value); |
104 | } | 106 | } |
105 | 107 | ||
@@ -254,7 +256,7 @@ abstract class _RxImpl<T> extends RxNotifier<T> with RxObjectMixin<T> { | @@ -254,7 +256,7 @@ abstract class _RxImpl<T> extends RxNotifier<T> with RxObjectMixin<T> { | ||
254 | value = v; | 256 | value = v; |
255 | // If it's not the first rebuild, the listeners have been called already | 257 | // If it's not the first rebuild, the listeners have been called already |
256 | // So we won't call them again. | 258 | // So we won't call them again. |
257 | - if (!firstRebuild) { | 259 | + if (!firstRebuild && !sentToStream) { |
258 | subject.add(v); | 260 | subject.add(v); |
259 | } | 261 | } |
260 | } | 262 | } |
-
Please register or login to post a comment