import 'dart:async'; import 'package:hive/hive.dart'; import 'package:mobx/mobx.dart'; import 'package:hash_wallet/di.dart'; import 'package:cw_core/node.dart'; import 'package:hash_wallet/utils/mobx.dart'; part 'node_list_store.g.dart'; class NodeListStore = NodeListStoreBase with _$NodeListStore; abstract class NodeListStoreBase with Store { NodeListStoreBase() : nodes = ObservableList(); static StreamSubscription? _onNodesSourceChange; static NodeListStore? _instance; static NodeListStore get instance { if (_instance != null) { return _instance!; } final nodeSource = getIt.get>(); _instance = NodeListStore(); _instance!.nodes.clear(); _instance!.nodes.addAll(nodeSource.values); _onNodesSourceChange?.cancel(); _onNodesSourceChange = nodeSource.bindToList(_instance!.nodes); return _instance!; } final ObservableList nodes; }