Line data Source code
1 : import 'dart:async'; 2 : 3 : import 'package:meta/meta.dart'; 4 : 5 : class SingleValueRepository<Item> { 6 1 : SingleValueRepository({ 7 : this.item, 8 1 : }) : _streamController = StreamController<Item?>.broadcast() { 9 1 : _emitItemToStream(); 10 : } 11 : 12 : @internal 13 : Item? item; 14 : final StreamController<Item?> _streamController; 15 : 16 1 : void _emitItemToStream() { 17 3 : _streamController.add(item); 18 : } 19 : 20 1 : void setItem(Item? value) { 21 1 : item = value; 22 1 : _emitItemToStream(); 23 : } 24 : 25 1 : Item? getItem() { 26 1 : return item; 27 : } 28 : 29 1 : void deleteItem() { 30 1 : item = null; 31 1 : _emitItemToStream(); 32 : } 33 : 34 1 : bool isSet() { 35 1 : return item != null; 36 : } 37 : 38 1 : Stream<Item?> getStream() { 39 2 : return _streamController.stream; 40 : } 41 : }