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