This commit is contained in:
2025-04-27 14:32:30 +03:00
parent d9cf149d26
commit f9627998e7

View File

@@ -15,6 +15,21 @@ class SheetStore extends ChangeNotifier {
static final StreamController<UnmodifiableMapView<String, dynamic>> _stateStreamController = StreamController<UnmodifiableMapView<String, dynamic>>.broadcast(); static final StreamController<UnmodifiableMapView<String, dynamic>> _stateStreamController = StreamController<UnmodifiableMapView<String, dynamic>>.broadcast();
final Stream<UnmodifiableMapView<String, dynamic>> stateStream = _stateStreamController.stream; final Stream<UnmodifiableMapView<String, dynamic>> stateStream = _stateStreamController.stream;
/// Adds [item] to store.
dynamic get(String itemID) {
if (!_items.containsKey(itemID)) {
throw Exception('No item with the ID $itemID exist in the SheetStore, Are you sure you added it?');
}
return _items[itemID];
}
dynamic tryGet(String itemID) {
if (!_items.containsKey(itemID)) {
return null;
}
return _items[itemID];
}
/// Adds [item] to store. /// Adds [item] to store.
void add(String itemID, dynamic value) { void add(String itemID, dynamic value) {
_items.addEntries(<MapEntry<String, dynamic>>[MapEntry<String, dynamic>(itemID, value)]); _items.addEntries(<MapEntry<String, dynamic>>[MapEntry<String, dynamic>(itemID, value)]);
@@ -39,16 +54,15 @@ class SheetStore extends ChangeNotifier {
/// Removes [item] from the store. /// Removes [item] from the store.
void remove(String itemID, dynamic value) { void remove(String itemID, dynamic value) {
if (!_items.containsKey(itemID)) { if (_items.containsKey(itemID)) {
throw Exception('No item with the ID $itemID exist in the SheetStore, Are you sure you added it?');
}
_items.remove(itemID); _items.remove(itemID);
}
// This call tells the widgets that are listening to this store to rebuild. // This call tells the widgets that are listening to this store to rebuild.
notifyListeners(); notifyListeners();
} }
/// Return a stream builder for real-time value updates. /// Return a stream builder for real-time value updates.
Widget builder({required Widget child}) { Widget builder({required Widget child}) {
return ListenableBuilder(listenable: this, builder: (_,__) => child); return ListenableBuilder(listenable: this, builder: (_, __) => child);
} }
} }