cached_streamable 1.1.1
cached_streamable: ^1.1.1 copied to clipboard
Simple interface for creating a streamable data source that caches it latest value.
cached_streamable #
Simple interface for creating a streamable data source that caches it latest value.
Think of it as an "extended" StreamController.
Usage #
- Create your implementation by extending
CachedStreamable. Use thevaluegetter and setter to update the cached value. You can use any single data type. This example usesint. (valuegetter is where you can access the latest data.valuesetter is where you can update the cache and notify listeners.)
class CounterRepository extends CachedStreamable<int> {
CounterRepository() : super(0);
// Some arbitrary future that updates the internal cached value
Future<void> increment() =>
Future<void>.delayed(Duration.zero, () => value = value + 1);
}
- Use the
streamto access all the updates to the cache.
Future<void> main() async {
// prints "0" when first listened to
final repo = CounterRepository()..stream.listen(print);
// prints "1"
await repo.increment();
}
- Don't forget to call
closewhen you are done.
await repo.close();
You don't have to extend the class. You can use CachedStreamable inline:
final counter = CachedStreamable<int>(0);
counter.value++;