Created
July 31, 2023 09:21
MapValueStream<T, U> for RxDart
This file contains 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