Grant Slender

Fix to rx.trigger so that it checks for previous send to stream by set value

@@ -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 }