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