Skip to content

Instantly share code, notes, and snippets.

@Albert221
Created July 31, 2023 09:21
Show Gist options
  • Save Albert221/c0da244cec07f7f2de317d19d9a56a27 to your computer and use it in GitHub Desktop.
Save Albert221/c0da244cec07f7f2de317d19d9a56a27 to your computer and use it in GitHub Desktop.
MapValueStream<T, U> for RxDart
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