Showing
3 changed files
with
111 additions
and
86 deletions
| @@ -30,18 +30,6 @@ class RxList<E> implements List<E>, RxInterface<List<E>> { | @@ -30,18 +30,6 @@ class RxList<E> implements List<E>, RxInterface<List<E>> { | ||
| 30 | StreamController<List<E>> subject = StreamController<List<E>>.broadcast(); | 30 | StreamController<List<E>> subject = StreamController<List<E>>.broadcast(); |
| 31 | Map<Stream<List<E>>, StreamSubscription> _subscriptions = Map(); | 31 | Map<Stream<List<E>>, StreamSubscription> _subscriptions = Map(); |
| 32 | 32 | ||
| 33 | - /// Adds [item] only if [condition] resolves to true. | ||
| 34 | - void addIf(condition, E item) { | ||
| 35 | - if (condition is Condition) condition = condition(); | ||
| 36 | - if (condition is bool && condition) add(item); | ||
| 37 | - } | ||
| 38 | - | ||
| 39 | - /// Adds all [items] only if [condition] resolves to true. | ||
| 40 | - void addAllIf(condition, Iterable<E> items) { | ||
| 41 | - if (condition is Condition) condition = condition(); | ||
| 42 | - if (condition is bool && condition) addAll(items); | ||
| 43 | - } | ||
| 44 | - | ||
| 45 | operator []=(int index, E val) { | 33 | operator []=(int index, E val) { |
| 46 | _list[index] = val; | 34 | _list[index] = val; |
| 47 | subject.add(_list); | 35 | subject.add(_list); |
| @@ -64,31 +52,47 @@ class RxList<E> implements List<E>, RxInterface<List<E>> { | @@ -64,31 +52,47 @@ class RxList<E> implements List<E>, RxInterface<List<E>> { | ||
| 64 | subject.add(_list); | 52 | subject.add(_list); |
| 65 | } | 53 | } |
| 66 | 54 | ||
| 55 | + @override | ||
| 67 | void addAll(Iterable<E> item) { | 56 | void addAll(Iterable<E> item) { |
| 68 | _list.addAll(item); | 57 | _list.addAll(item); |
| 69 | subject.add(_list); | 58 | subject.add(_list); |
| 70 | } | 59 | } |
| 71 | 60 | ||
| 72 | - /// Adds only if [item] is not null. | 61 | + /// Add [item] to [List<E>] only if [item] is not null. |
| 73 | void addNonNull(E item) { | 62 | void addNonNull(E item) { |
| 74 | if (item != null) add(item); | 63 | if (item != null) add(item); |
| 75 | } | 64 | } |
| 76 | 65 | ||
| 77 | - /// Adds only if [item] is not null. | 66 | + /// Add [Iterable<E>] to [List<E>] only if [Iterable<E>] is not null. |
| 78 | void addAllNonNull(Iterable<E> item) { | 67 | void addAllNonNull(Iterable<E> item) { |
| 79 | if (item != null) addAll(item); | 68 | if (item != null) addAll(item); |
| 80 | } | 69 | } |
| 81 | 70 | ||
| 71 | + /// Add [item] to [List<E>] only if [condition] is true. | ||
| 72 | + void addIf(dynamic condition, E item) { | ||
| 73 | + if (condition is Condition) condition = condition(); | ||
| 74 | + if (condition is bool && condition) add(item); | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + /// Adds [Iterable<E>] to [List<E>] only if [condition] is true. | ||
| 78 | + void addAllIf(dynamic condition, Iterable<E> items) { | ||
| 79 | + if (condition is Condition) condition = condition(); | ||
| 80 | + if (condition is bool && condition) addAll(items); | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + @override | ||
| 82 | void insert(int index, E item) { | 84 | void insert(int index, E item) { |
| 83 | _list.insert(index, item); | 85 | _list.insert(index, item); |
| 84 | subject.add(_list); | 86 | subject.add(_list); |
| 85 | } | 87 | } |
| 86 | 88 | ||
| 89 | + @override | ||
| 87 | void insertAll(int index, Iterable<E> iterable) { | 90 | void insertAll(int index, Iterable<E> iterable) { |
| 88 | _list.insertAll(index, iterable); | 91 | _list.insertAll(index, iterable); |
| 89 | subject.add(_list); | 92 | subject.add(_list); |
| 90 | } | 93 | } |
| 91 | 94 | ||
| 95 | + @override | ||
| 92 | int get length => value.length; | 96 | int get length => value.length; |
| 93 | 97 | ||
| 94 | /// Removes an item from the list. | 98 | /// Removes an item from the list. |
| @@ -96,6 +100,7 @@ class RxList<E> implements List<E>, RxInterface<List<E>> { | @@ -96,6 +100,7 @@ class RxList<E> implements List<E>, RxInterface<List<E>> { | ||
| 96 | /// This is O(N) in the number of items in the list. | 100 | /// This is O(N) in the number of items in the list. |
| 97 | /// | 101 | /// |
| 98 | /// Returns whether the item was present in the list. | 102 | /// Returns whether the item was present in the list. |
| 103 | + @override | ||
| 99 | bool remove(Object item) { | 104 | bool remove(Object item) { |
| 100 | bool hasRemoved = _list.remove(item); | 105 | bool hasRemoved = _list.remove(item); |
| 101 | if (hasRemoved) { | 106 | if (hasRemoved) { |
| @@ -104,38 +109,45 @@ class RxList<E> implements List<E>, RxInterface<List<E>> { | @@ -104,38 +109,45 @@ class RxList<E> implements List<E>, RxInterface<List<E>> { | ||
| 104 | return hasRemoved; | 109 | return hasRemoved; |
| 105 | } | 110 | } |
| 106 | 111 | ||
| 112 | + @override | ||
| 107 | E removeAt(int index) { | 113 | E removeAt(int index) { |
| 108 | E item = _list.removeAt(index); | 114 | E item = _list.removeAt(index); |
| 109 | subject.add(_list); | 115 | subject.add(_list); |
| 110 | return item; | 116 | return item; |
| 111 | } | 117 | } |
| 112 | 118 | ||
| 119 | + @override | ||
| 113 | E removeLast() { | 120 | E removeLast() { |
| 114 | E item = _list.removeLast(); | 121 | E item = _list.removeLast(); |
| 115 | subject.add(_list); | 122 | subject.add(_list); |
| 116 | return item; | 123 | return item; |
| 117 | } | 124 | } |
| 118 | 125 | ||
| 126 | + @override | ||
| 119 | void removeRange(int start, int end) { | 127 | void removeRange(int start, int end) { |
| 120 | _list.removeRange(start, end); | 128 | _list.removeRange(start, end); |
| 121 | subject.add(_list); | 129 | subject.add(_list); |
| 122 | } | 130 | } |
| 123 | 131 | ||
| 132 | + @override | ||
| 124 | void removeWhere(bool Function(E) test) { | 133 | void removeWhere(bool Function(E) test) { |
| 125 | _list.removeWhere(test); | 134 | _list.removeWhere(test); |
| 126 | subject.add(_list); | 135 | subject.add(_list); |
| 127 | } | 136 | } |
| 128 | 137 | ||
| 138 | + @override | ||
| 129 | void clear() { | 139 | void clear() { |
| 130 | _list.clear(); | 140 | _list.clear(); |
| 131 | subject.add(_list); | 141 | subject.add(_list); |
| 132 | } | 142 | } |
| 133 | 143 | ||
| 144 | + @override | ||
| 134 | void sort([int compare(E a, E b)]) { | 145 | void sort([int compare(E a, E b)]) { |
| 135 | _list.sort(); | 146 | _list.sort(); |
| 136 | subject.add(_list); | 147 | subject.add(_list); |
| 137 | } | 148 | } |
| 138 | 149 | ||
| 150 | + @override | ||
| 139 | close() { | 151 | close() { |
| 140 | _subscriptions.forEach((observable, subscription) { | 152 | _subscriptions.forEach((observable, subscription) { |
| 141 | subscription.cancel(); | 153 | subscription.cancel(); |
| @@ -168,7 +180,8 @@ class RxList<E> implements List<E>, RxInterface<List<E>> { | @@ -168,7 +180,8 @@ class RxList<E> implements List<E>, RxInterface<List<E>> { | ||
| 168 | } | 180 | } |
| 169 | return _list; | 181 | return _list; |
| 170 | } | 182 | } |
| 171 | - | 183 | + |
| 184 | + | ||
| 172 | String get string => value.toString(); | 185 | String get string => value.toString(); |
| 173 | 186 | ||
| 174 | addListener(Stream<List<E>> rxGetx) { | 187 | addListener(Stream<List<E>> rxGetx) { |
| @@ -196,210 +209,219 @@ class RxList<E> implements List<E>, RxInterface<List<E>> { | @@ -196,210 +209,219 @@ class RxList<E> implements List<E>, RxInterface<List<E>> { | ||
| 196 | stream.listen((va) => value = va); | 209 | stream.listen((va) => value = va); |
| 197 | 210 | ||
| 198 | @override | 211 | @override |
| 199 | - E get first => _list.first; | 212 | + E get first => value.first; |
| 200 | 213 | ||
| 201 | @override | 214 | @override |
| 202 | - E get last => _list.last; | 215 | + E get last => value.last; |
| 203 | 216 | ||
| 204 | @override | 217 | @override |
| 205 | bool any(bool Function(E) test) { | 218 | bool any(bool Function(E) test) { |
| 206 | - return _list.any(test); | 219 | + return value.any(test); |
| 207 | } | 220 | } |
| 208 | 221 | ||
| 209 | @override | 222 | @override |
| 210 | Map<int, E> asMap() { | 223 | Map<int, E> asMap() { |
| 211 | - return _list.asMap(); | 224 | + return value.asMap(); |
| 212 | } | 225 | } |
| 213 | 226 | ||
| 214 | @override | 227 | @override |
| 215 | List<R> cast<R>() { | 228 | List<R> cast<R>() { |
| 216 | - return _list.cast<R>(); | 229 | + return value.cast<R>(); |
| 217 | } | 230 | } |
| 218 | 231 | ||
| 219 | @override | 232 | @override |
| 220 | bool contains(Object element) { | 233 | bool contains(Object element) { |
| 221 | - return _list.contains(element); | 234 | + return value.contains(element); |
| 222 | } | 235 | } |
| 223 | 236 | ||
| 224 | @override | 237 | @override |
| 225 | E elementAt(int index) { | 238 | E elementAt(int index) { |
| 226 | - return _list.elementAt(index); | 239 | + return value.elementAt(index); |
| 227 | } | 240 | } |
| 228 | 241 | ||
| 229 | @override | 242 | @override |
| 230 | bool every(bool Function(E) test) { | 243 | bool every(bool Function(E) test) { |
| 231 | - return _list.every(test); | 244 | + return value.every(test); |
| 232 | } | 245 | } |
| 233 | 246 | ||
| 234 | @override | 247 | @override |
| 235 | Iterable<T> expand<T>(Iterable<T> Function(E) f) { | 248 | Iterable<T> expand<T>(Iterable<T> Function(E) f) { |
| 236 | - return _list.expand(f); | 249 | + return value.expand(f); |
| 237 | } | 250 | } |
| 238 | 251 | ||
| 239 | @override | 252 | @override |
| 240 | void fillRange(int start, int end, [E fillValue]) { | 253 | void fillRange(int start, int end, [E fillValue]) { |
| 241 | _list.fillRange(start, end, fillValue); | 254 | _list.fillRange(start, end, fillValue); |
| 255 | + subject.add(_list); | ||
| 242 | } | 256 | } |
| 243 | 257 | ||
| 244 | @override | 258 | @override |
| 245 | E firstWhere(bool Function(E) test, {E Function() orElse}) { | 259 | E firstWhere(bool Function(E) test, {E Function() orElse}) { |
| 246 | - return _list.firstWhere(test, orElse: orElse); | 260 | + return value.firstWhere(test, orElse: orElse); |
| 247 | } | 261 | } |
| 248 | 262 | ||
| 249 | @override | 263 | @override |
| 250 | T fold<T>(T initialValue, T Function(T, E) combine) { | 264 | T fold<T>(T initialValue, T Function(T, E) combine) { |
| 251 | - return _list.fold(initialValue, combine); | 265 | + return value.fold(initialValue, combine); |
| 252 | } | 266 | } |
| 253 | 267 | ||
| 254 | @override | 268 | @override |
| 255 | Iterable<E> followedBy(Iterable<E> other) { | 269 | Iterable<E> followedBy(Iterable<E> other) { |
| 256 | - return _list.followedBy(other); | 270 | + return value.followedBy(other); |
| 257 | } | 271 | } |
| 258 | 272 | ||
| 259 | @override | 273 | @override |
| 260 | void forEach(void Function(E) f) { | 274 | void forEach(void Function(E) f) { |
| 261 | - _list.forEach(f); | 275 | + value.forEach(f); |
| 262 | } | 276 | } |
| 263 | 277 | ||
| 264 | @override | 278 | @override |
| 265 | Iterable<E> getRange(int start, int end) { | 279 | Iterable<E> getRange(int start, int end) { |
| 266 | - return _list.getRange(start, end); | 280 | + return value.getRange(start, end); |
| 267 | } | 281 | } |
| 268 | 282 | ||
| 269 | @override | 283 | @override |
| 270 | int indexOf(E element, [int start = 0]) { | 284 | int indexOf(E element, [int start = 0]) { |
| 271 | - return _list.indexOf(element, start); | 285 | + return value.indexOf(element, start); |
| 272 | } | 286 | } |
| 273 | 287 | ||
| 274 | @override | 288 | @override |
| 275 | int indexWhere(bool Function(E) test, [int start = 0]) { | 289 | int indexWhere(bool Function(E) test, [int start = 0]) { |
| 276 | - return _list.indexWhere(test, start); | 290 | + return value.indexWhere(test, start); |
| 277 | } | 291 | } |
| 278 | 292 | ||
| 279 | @override | 293 | @override |
| 280 | String join([String separator = ""]) { | 294 | String join([String separator = ""]) { |
| 281 | - return _list.join(separator); | 295 | + return value.join(separator); |
| 282 | } | 296 | } |
| 283 | 297 | ||
| 284 | @override | 298 | @override |
| 285 | int lastIndexOf(E element, [int start]) { | 299 | int lastIndexOf(E element, [int start]) { |
| 286 | - return _list.lastIndexOf(element, start); | 300 | + return value.lastIndexOf(element, start); |
| 287 | } | 301 | } |
| 288 | 302 | ||
| 289 | @override | 303 | @override |
| 290 | int lastIndexWhere(bool Function(E) test, [int start]) { | 304 | int lastIndexWhere(bool Function(E) test, [int start]) { |
| 291 | - return _list.lastIndexWhere(test, start); | 305 | + return value.lastIndexWhere(test, start); |
| 292 | } | 306 | } |
| 293 | 307 | ||
| 294 | @override | 308 | @override |
| 295 | E lastWhere(bool Function(E) test, {E Function() orElse}) { | 309 | E lastWhere(bool Function(E) test, {E Function() orElse}) { |
| 296 | - return _list.lastWhere(test, orElse: orElse); | 310 | + return value.lastWhere(test, orElse: orElse); |
| 297 | } | 311 | } |
| 298 | 312 | ||
| 299 | @override | 313 | @override |
| 300 | set length(int newLength) { | 314 | set length(int newLength) { |
| 301 | _list.length = newLength; | 315 | _list.length = newLength; |
| 316 | + subject.add(_list); | ||
| 302 | } | 317 | } |
| 303 | 318 | ||
| 304 | @override | 319 | @override |
| 305 | Iterable<T> map<T>(T Function(E) f) { | 320 | Iterable<T> map<T>(T Function(E) f) { |
| 306 | - return _list.map(f); | 321 | + return value.map(f); |
| 307 | } | 322 | } |
| 308 | 323 | ||
| 309 | @override | 324 | @override |
| 310 | E reduce(E Function(E, E) combine) { | 325 | E reduce(E Function(E, E) combine) { |
| 311 | - return _list.reduce(combine); | 326 | + return value.reduce(combine); |
| 312 | } | 327 | } |
| 313 | 328 | ||
| 314 | @override | 329 | @override |
| 315 | void replaceRange(int start, int end, Iterable<E> replacement) { | 330 | void replaceRange(int start, int end, Iterable<E> replacement) { |
| 316 | _list.replaceRange(start, end, replacement); | 331 | _list.replaceRange(start, end, replacement); |
| 332 | + subject.add(_list); | ||
| 317 | } | 333 | } |
| 318 | 334 | ||
| 319 | @override | 335 | @override |
| 320 | void retainWhere(bool Function(E) test) { | 336 | void retainWhere(bool Function(E) test) { |
| 321 | _list.retainWhere(test); | 337 | _list.retainWhere(test); |
| 338 | + subject.add(_list); | ||
| 322 | } | 339 | } |
| 323 | 340 | ||
| 324 | @override | 341 | @override |
| 325 | - Iterable<E> get reversed => _list.reversed; | 342 | + Iterable<E> get reversed => value.reversed; |
| 326 | 343 | ||
| 327 | @override | 344 | @override |
| 328 | void setAll(int index, Iterable<E> iterable) { | 345 | void setAll(int index, Iterable<E> iterable) { |
| 329 | _list.setAll(index, iterable); | 346 | _list.setAll(index, iterable); |
| 347 | + subject.add(_list); | ||
| 330 | } | 348 | } |
| 331 | 349 | ||
| 332 | @override | 350 | @override |
| 333 | void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) { | 351 | void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) { |
| 334 | _list.setRange(start, end, iterable, skipCount); | 352 | _list.setRange(start, end, iterable, skipCount); |
| 353 | + subject.add(_list); | ||
| 335 | } | 354 | } |
| 336 | 355 | ||
| 337 | @override | 356 | @override |
| 338 | void shuffle([Random random]) { | 357 | void shuffle([Random random]) { |
| 339 | _list.shuffle(random); | 358 | _list.shuffle(random); |
| 359 | + subject.add(_list); | ||
| 340 | } | 360 | } |
| 341 | 361 | ||
| 342 | @override | 362 | @override |
| 343 | - E get single => _list.single; | 363 | + E get single => value.single; |
| 344 | 364 | ||
| 345 | @override | 365 | @override |
| 346 | E singleWhere(bool Function(E) test, {E Function() orElse}) { | 366 | E singleWhere(bool Function(E) test, {E Function() orElse}) { |
| 347 | - return _list.singleWhere(test, orElse: orElse); | 367 | + return value.singleWhere(test, orElse: orElse); |
| 348 | } | 368 | } |
| 349 | 369 | ||
| 350 | @override | 370 | @override |
| 351 | Iterable<E> skip(int count) { | 371 | Iterable<E> skip(int count) { |
| 352 | - return _list.skip(count); | 372 | + return value.skip(count); |
| 353 | } | 373 | } |
| 354 | 374 | ||
| 355 | @override | 375 | @override |
| 356 | Iterable<E> skipWhile(bool Function(E) test) { | 376 | Iterable<E> skipWhile(bool Function(E) test) { |
| 357 | - return _list.skipWhile(test); | 377 | + return value.skipWhile(test); |
| 358 | } | 378 | } |
| 359 | 379 | ||
| 360 | @override | 380 | @override |
| 361 | List<E> sublist(int start, [int end]) { | 381 | List<E> sublist(int start, [int end]) { |
| 362 | - return _list.sublist(start, end); | 382 | + return value.sublist(start, end); |
| 363 | } | 383 | } |
| 364 | 384 | ||
| 365 | @override | 385 | @override |
| 366 | Iterable<E> take(int count) { | 386 | Iterable<E> take(int count) { |
| 367 | - return _list.take(count); | 387 | + return value.take(count); |
| 368 | } | 388 | } |
| 369 | 389 | ||
| 370 | @override | 390 | @override |
| 371 | Iterable<E> takeWhile(bool Function(E) test) { | 391 | Iterable<E> takeWhile(bool Function(E) test) { |
| 372 | - return _list.takeWhile(test); | 392 | + return value.takeWhile(test); |
| 373 | } | 393 | } |
| 374 | 394 | ||
| 375 | @override | 395 | @override |
| 376 | List<E> toList({bool growable = true}) { | 396 | List<E> toList({bool growable = true}) { |
| 377 | - return _list.toList(growable: growable); | 397 | + return value.toList(growable: growable); |
| 378 | } | 398 | } |
| 379 | 399 | ||
| 380 | @override | 400 | @override |
| 381 | Set<E> toSet() { | 401 | Set<E> toSet() { |
| 382 | - return _list.toSet(); | 402 | + return value.toSet(); |
| 383 | } | 403 | } |
| 384 | 404 | ||
| 385 | @override | 405 | @override |
| 386 | Iterable<E> where(bool Function(E) test) { | 406 | Iterable<E> where(bool Function(E) test) { |
| 387 | - return _list.where(test); | 407 | + return value.where(test); |
| 388 | } | 408 | } |
| 389 | 409 | ||
| 390 | @override | 410 | @override |
| 391 | Iterable<T> whereType<T>() { | 411 | Iterable<T> whereType<T>() { |
| 392 | - return _list.whereType<T>(); | 412 | + return value.whereType<T>(); |
| 393 | } | 413 | } |
| 394 | 414 | ||
| 395 | @override | 415 | @override |
| 396 | set first(E value) { | 416 | set first(E value) { |
| 397 | _list.first = value; | 417 | _list.first = value; |
| 418 | + subject.add(_list); | ||
| 398 | } | 419 | } |
| 399 | 420 | ||
| 400 | @override | 421 | @override |
| 401 | set last(E value) { | 422 | set last(E value) { |
| 402 | _list.last = value; | 423 | _list.last = value; |
| 424 | + subject.add(_list); | ||
| 403 | } | 425 | } |
| 404 | } | 426 | } |
| 405 | 427 |
| @@ -4,7 +4,7 @@ import '../../../../get.dart'; | @@ -4,7 +4,7 @@ import '../../../../get.dart'; | ||
| 4 | import '../rx_core/rx_interface.dart'; | 4 | import '../rx_core/rx_interface.dart'; |
| 5 | import '../rx_typedefs/rx_typedefs.dart'; | 5 | import '../rx_typedefs/rx_typedefs.dart'; |
| 6 | 6 | ||
| 7 | -class RxMap<K, V> extends RxInterface<Map<K, V>> implements Map<K, V> { | 7 | +class RxMap<K, V> implements RxInterface<Map<K, V>>, Map<K, V> { |
| 8 | RxMap([Map<K, V> initial]) { | 8 | RxMap([Map<K, V> initial]) { |
| 9 | _value = initial; | 9 | _value = initial; |
| 10 | } | 10 | } |
| @@ -111,20 +111,20 @@ class RxMap<K, V> extends RxInterface<Map<K, V>> implements Map<K, V> { | @@ -111,20 +111,20 @@ class RxMap<K, V> extends RxInterface<Map<K, V>> implements Map<K, V> { | ||
| 111 | } | 111 | } |
| 112 | 112 | ||
| 113 | @override | 113 | @override |
| 114 | - Map<K2, V2> cast<K2, V2>() => _value.cast<K2, V2>(); | 114 | + Map<K2, V2> cast<K2, V2>() => value.cast<K2, V2>(); |
| 115 | 115 | ||
| 116 | @override | 116 | @override |
| 117 | - bool containsKey(Object key) => _value.containsKey(key); | 117 | + bool containsKey(Object key) => value.containsKey(key); |
| 118 | 118 | ||
| 119 | @override | 119 | @override |
| 120 | bool containsValue(Object value) => _value.containsValue(value); | 120 | bool containsValue(Object value) => _value.containsValue(value); |
| 121 | 121 | ||
| 122 | @override | 122 | @override |
| 123 | - Iterable<MapEntry<K, V>> get entries => _value.entries; | 123 | + Iterable<MapEntry<K, V>> get entries => value.entries; |
| 124 | 124 | ||
| 125 | @override | 125 | @override |
| 126 | void forEach(void Function(K, V) f) { | 126 | void forEach(void Function(K, V) f) { |
| 127 | - _value.forEach(f); | 127 | + value.forEach(f); |
| 128 | } | 128 | } |
| 129 | 129 | ||
| 130 | @override | 130 | @override |
| @@ -134,7 +134,7 @@ class RxMap<K, V> extends RxInterface<Map<K, V>> implements Map<K, V> { | @@ -134,7 +134,7 @@ class RxMap<K, V> extends RxInterface<Map<K, V>> implements Map<K, V> { | ||
| 134 | bool get isNotEmpty => value.isNotEmpty; | 134 | bool get isNotEmpty => value.isNotEmpty; |
| 135 | 135 | ||
| 136 | @override | 136 | @override |
| 137 | - Iterable<K> get keys => _value.keys; | 137 | + Iterable<K> get keys => value.keys; |
| 138 | 138 | ||
| 139 | @override | 139 | @override |
| 140 | int get length => value.length; | 140 | int get length => value.length; |
| @@ -193,167 +193,170 @@ class RxSet<E> implements Set<E>, RxInterface<Set<E>> { | @@ -193,167 +193,170 @@ class RxSet<E> implements Set<E>, RxInterface<Set<E>> { | ||
| 193 | stream.listen((va) => value = va); | 193 | stream.listen((va) => value = va); |
| 194 | 194 | ||
| 195 | @override | 195 | @override |
| 196 | - E get first => _list.first; | 196 | + E get first => value.first; |
| 197 | 197 | ||
| 198 | @override | 198 | @override |
| 199 | - E get last => _list.last; | 199 | + E get last => value.last; |
| 200 | 200 | ||
| 201 | @override | 201 | @override |
| 202 | bool any(bool Function(E) test) { | 202 | bool any(bool Function(E) test) { |
| 203 | - return _list.any(test); | 203 | + return value.any(test); |
| 204 | } | 204 | } |
| 205 | 205 | ||
| 206 | @override | 206 | @override |
| 207 | Set<R> cast<R>() { | 207 | Set<R> cast<R>() { |
| 208 | - return _list.cast<R>(); | 208 | + return value.cast<R>(); |
| 209 | } | 209 | } |
| 210 | 210 | ||
| 211 | @override | 211 | @override |
| 212 | bool contains(Object element) { | 212 | bool contains(Object element) { |
| 213 | - return _list.contains(element); | 213 | + return value.contains(element); |
| 214 | } | 214 | } |
| 215 | 215 | ||
| 216 | @override | 216 | @override |
| 217 | E elementAt(int index) { | 217 | E elementAt(int index) { |
| 218 | - return _list.elementAt(index); | 218 | + return value.elementAt(index); |
| 219 | } | 219 | } |
| 220 | 220 | ||
| 221 | @override | 221 | @override |
| 222 | bool every(bool Function(E) test) { | 222 | bool every(bool Function(E) test) { |
| 223 | - return _list.every(test); | 223 | + return value.every(test); |
| 224 | } | 224 | } |
| 225 | 225 | ||
| 226 | @override | 226 | @override |
| 227 | Iterable<T> expand<T>(Iterable<T> Function(E) f) { | 227 | Iterable<T> expand<T>(Iterable<T> Function(E) f) { |
| 228 | - return _list.expand(f); | 228 | + return value.expand(f); |
| 229 | } | 229 | } |
| 230 | 230 | ||
| 231 | @override | 231 | @override |
| 232 | E firstWhere(bool Function(E) test, {E Function() orElse}) { | 232 | E firstWhere(bool Function(E) test, {E Function() orElse}) { |
| 233 | - return _list.firstWhere(test, orElse: orElse); | 233 | + return value.firstWhere(test, orElse: orElse); |
| 234 | } | 234 | } |
| 235 | 235 | ||
| 236 | @override | 236 | @override |
| 237 | T fold<T>(T initialValue, T Function(T, E) combine) { | 237 | T fold<T>(T initialValue, T Function(T, E) combine) { |
| 238 | - return _list.fold(initialValue, combine); | 238 | + return value.fold(initialValue, combine); |
| 239 | } | 239 | } |
| 240 | 240 | ||
| 241 | @override | 241 | @override |
| 242 | Iterable<E> followedBy(Iterable<E> other) { | 242 | Iterable<E> followedBy(Iterable<E> other) { |
| 243 | - return _list.followedBy(other); | 243 | + return value.followedBy(other); |
| 244 | } | 244 | } |
| 245 | 245 | ||
| 246 | @override | 246 | @override |
| 247 | void forEach(void Function(E) f) { | 247 | void forEach(void Function(E) f) { |
| 248 | - _list.forEach(f); | 248 | + value.forEach(f); |
| 249 | } | 249 | } |
| 250 | 250 | ||
| 251 | @override | 251 | @override |
| 252 | String join([String separator = ""]) { | 252 | String join([String separator = ""]) { |
| 253 | - return _list.join(separator); | 253 | + return value.join(separator); |
| 254 | } | 254 | } |
| 255 | 255 | ||
| 256 | @override | 256 | @override |
| 257 | E lastWhere(bool Function(E) test, {E Function() orElse}) { | 257 | E lastWhere(bool Function(E) test, {E Function() orElse}) { |
| 258 | - return _list.lastWhere(test, orElse: orElse); | 258 | + return value.lastWhere(test, orElse: orElse); |
| 259 | } | 259 | } |
| 260 | 260 | ||
| 261 | @override | 261 | @override |
| 262 | Iterable<T> map<T>(T Function(E) f) { | 262 | Iterable<T> map<T>(T Function(E) f) { |
| 263 | - return _list.map(f); | 263 | + return value.map(f); |
| 264 | } | 264 | } |
| 265 | 265 | ||
| 266 | @override | 266 | @override |
| 267 | E reduce(E Function(E, E) combine) { | 267 | E reduce(E Function(E, E) combine) { |
| 268 | - return _list.reduce(combine); | 268 | + return value.reduce(combine); |
| 269 | } | 269 | } |
| 270 | 270 | ||
| 271 | @override | 271 | @override |
| 272 | - E get single => _list.single; | 272 | + E get single => value.single; |
| 273 | 273 | ||
| 274 | @override | 274 | @override |
| 275 | E singleWhere(bool Function(E) test, {E Function() orElse}) { | 275 | E singleWhere(bool Function(E) test, {E Function() orElse}) { |
| 276 | - return _list.singleWhere(test, orElse: orElse); | 276 | + return value.singleWhere(test, orElse: orElse); |
| 277 | } | 277 | } |
| 278 | 278 | ||
| 279 | @override | 279 | @override |
| 280 | Iterable<E> skip(int count) { | 280 | Iterable<E> skip(int count) { |
| 281 | - return _list.skip(count); | 281 | + return value.skip(count); |
| 282 | } | 282 | } |
| 283 | 283 | ||
| 284 | @override | 284 | @override |
| 285 | Iterable<E> skipWhile(bool Function(E) test) { | 285 | Iterable<E> skipWhile(bool Function(E) test) { |
| 286 | - return _list.skipWhile(test); | 286 | + return value.skipWhile(test); |
| 287 | } | 287 | } |
| 288 | 288 | ||
| 289 | @override | 289 | @override |
| 290 | Iterable<E> take(int count) { | 290 | Iterable<E> take(int count) { |
| 291 | - return _list.take(count); | 291 | + return value.take(count); |
| 292 | } | 292 | } |
| 293 | 293 | ||
| 294 | @override | 294 | @override |
| 295 | Iterable<E> takeWhile(bool Function(E) test) { | 295 | Iterable<E> takeWhile(bool Function(E) test) { |
| 296 | - return _list.takeWhile(test); | 296 | + return value.takeWhile(test); |
| 297 | } | 297 | } |
| 298 | 298 | ||
| 299 | @override | 299 | @override |
| 300 | List<E> toList({bool growable = true}) { | 300 | List<E> toList({bool growable = true}) { |
| 301 | - return _list.toList(growable: growable); | 301 | + return value.toList(growable: growable); |
| 302 | } | 302 | } |
| 303 | 303 | ||
| 304 | @override | 304 | @override |
| 305 | Set<E> toSet() { | 305 | Set<E> toSet() { |
| 306 | - return _list.toSet(); | 306 | + return value.toSet(); |
| 307 | } | 307 | } |
| 308 | 308 | ||
| 309 | @override | 309 | @override |
| 310 | Iterable<E> where(bool Function(E) test) { | 310 | Iterable<E> where(bool Function(E) test) { |
| 311 | - return _list.where(test); | 311 | + return value.where(test); |
| 312 | } | 312 | } |
| 313 | 313 | ||
| 314 | @override | 314 | @override |
| 315 | Iterable<T> whereType<T>() { | 315 | Iterable<T> whereType<T>() { |
| 316 | - return _list.whereType<T>(); | 316 | + return value.whereType<T>(); |
| 317 | } | 317 | } |
| 318 | 318 | ||
| 319 | @override | 319 | @override |
| 320 | bool containsAll(Iterable<Object> other) { | 320 | bool containsAll(Iterable<Object> other) { |
| 321 | - return _list.containsAll(other); | 321 | + return value.containsAll(other); |
| 322 | } | 322 | } |
| 323 | 323 | ||
| 324 | @override | 324 | @override |
| 325 | Set<E> difference(Set<Object> other) { | 325 | Set<E> difference(Set<Object> other) { |
| 326 | - return _list.difference(other); | 326 | + return value.difference(other); |
| 327 | } | 327 | } |
| 328 | 328 | ||
| 329 | @override | 329 | @override |
| 330 | Set<E> intersection(Set<Object> other) { | 330 | Set<E> intersection(Set<Object> other) { |
| 331 | - return _list.intersection(other); | 331 | + return value.intersection(other); |
| 332 | } | 332 | } |
| 333 | 333 | ||
| 334 | @override | 334 | @override |
| 335 | E lookup(Object object) { | 335 | E lookup(Object object) { |
| 336 | - return _list.lookup(object); | 336 | + return value.lookup(object); |
| 337 | } | 337 | } |
| 338 | 338 | ||
| 339 | @override | 339 | @override |
| 340 | void removeAll(Iterable<Object> elements) { | 340 | void removeAll(Iterable<Object> elements) { |
| 341 | _list.removeAll(elements); | 341 | _list.removeAll(elements); |
| 342 | + subject.add(_list); | ||
| 342 | } | 343 | } |
| 343 | 344 | ||
| 344 | @override | 345 | @override |
| 345 | void retainAll(Iterable<Object> elements) { | 346 | void retainAll(Iterable<Object> elements) { |
| 346 | _list.retainAll(elements); | 347 | _list.retainAll(elements); |
| 348 | + subject.add(_list); | ||
| 347 | } | 349 | } |
| 348 | 350 | ||
| 349 | @override | 351 | @override |
| 350 | void retainWhere(bool Function(E) E) { | 352 | void retainWhere(bool Function(E) E) { |
| 351 | _list.retainWhere(E); | 353 | _list.retainWhere(E); |
| 354 | + subject.add(_list); | ||
| 352 | } | 355 | } |
| 353 | 356 | ||
| 354 | @override | 357 | @override |
| 355 | Set<E> union(Set<E> other) { | 358 | Set<E> union(Set<E> other) { |
| 356 | - return _list.union(other); | 359 | + return value.union(other); |
| 357 | } | 360 | } |
| 358 | } | 361 | } |
| 359 | 362 |
-
Please register or login to post a comment