Showing
4 changed files
with
25 additions
and
2 deletions
@@ -116,7 +116,9 @@ mixin RxObjectMixin<T> on NotifyManager<T> { | @@ -116,7 +116,9 @@ mixin RxObjectMixin<T> on NotifyManager<T> { | ||
116 | /// Closing the subscription will happen automatically when the observer | 116 | /// Closing the subscription will happen automatically when the observer |
117 | /// Widget ([GetX] or [Obx]) gets unmounted from the Widget tree. | 117 | /// Widget ([GetX] or [Obx]) gets unmounted from the Widget tree. |
118 | void bindStream(Stream<T> stream) { | 118 | void bindStream(Stream<T> stream) { |
119 | - _subscriptions[subject].add(stream.listen((va) => value = va)); | 119 | + final listSubscriptions = |
120 | + _subscriptions[subject] ??= <StreamSubscription>[]; | ||
121 | + listSubscriptions.add(stream.listen((va) => value = va)); | ||
120 | } | 122 | } |
121 | } | 123 | } |
122 | 124 |
1 | name: get | 1 | name: get |
2 | description: Open screens/snackbars/dialogs without context, manage states and inject dependencies easily with GetX. | 2 | description: Open screens/snackbars/dialogs without context, manage states and inject dependencies easily with GetX. |
3 | -version: 3.25.2 | 3 | +version: 3.25.3 |
4 | homepage: https://github.com/jonataslaw/getx | 4 | homepage: https://github.com/jonataslaw/getx |
5 | 5 | ||
6 | environment: | 6 | environment: |
1 | +import 'dart:async'; | ||
2 | + | ||
1 | import 'package:flutter_test/flutter_test.dart'; | 3 | import 'package:flutter_test/flutter_test.dart'; |
2 | import 'package:get/get.dart'; | 4 | import 'package:get/get.dart'; |
3 | 5 | ||
@@ -77,4 +79,20 @@ void main() { | @@ -77,4 +79,20 @@ void main() { | ||
77 | await Future.delayed(Duration(milliseconds: 100)); | 79 | await Future.delayed(Duration(milliseconds: 100)); |
78 | expect(5, result); | 80 | expect(5, result); |
79 | }); | 81 | }); |
82 | + | ||
83 | + test('bindStream test', () async { | ||
84 | + var count = 0; | ||
85 | + final controller = StreamController<int>(); | ||
86 | + final rx = 0.obs; | ||
87 | + | ||
88 | + rx.listen((value) { | ||
89 | + count = value; | ||
90 | + }); | ||
91 | + rx.bindStream(controller.stream); | ||
92 | + expect(count, 0); | ||
93 | + controller.add(555); | ||
94 | + | ||
95 | + await Future.delayed(Duration.zero); | ||
96 | + expect(count, 555); | ||
97 | + }); | ||
80 | } | 98 | } |
-
Please register or login to post a comment