Created
July 31, 2023 09:21
-
-
Save Albert221/c0da244cec07f7f2de317d19d9a56a27 to your computer and use it in GitHub Desktop.
MapValueStream<T, U> for RxDart
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:async/async.dart'; | |
import 'package:rxdart/rxdart.dart'; | |
class MapValueStream<T, U> extends DelegatingStream<U> | |
implements ValueStream<U> { | |
MapValueStream(this._source, this._mapper) : super(_source.map(_mapper)); | |
final ValueStream<T> _source; | |
final U Function(T) _mapper; | |
@override | |
U get value => _mapper(_source.value); | |
@override | |
U? get valueOrNull { | |
if (_source.value case final value?) { | |
return _mapper(value); | |
} | |
return null; | |
} | |
@override | |
bool get hasValue => _source.hasValue; | |
@override | |
Object get error => _source.error; | |
@override | |
Object? get errorOrNull => _source.errorOrNull; | |
@override | |
bool get hasError => _source.hasError; | |
@override | |
StackTrace? get stackTrace => _source.stackTrace; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment