initialise method

  1. @override
void initialise()
override

Implementation

@override
void initialise() {
  _dataMap = <String, dynamic>{};
  clearErrors();
  _streamsSubscriptions = <String, StreamSubscription>{};

  if (!changeSource) {
    notifyListeners();
  }
  final streamsMapValues = Map<String, StreamData>.from(streamsMap);

  for (final key in streamsMapValues.keys) {
    // If a lifecycle function isn't supplied, we fallback to default
    _streamsSubscriptions![key] = streamsMapValues[key]!.stream.listen(
      (incomingData) {
        setErrorForObject(key, null);
        notifyListeners();
        // Extra security in case transformData isnt sent
        var interceptedData = streamsMapValues[key]!.transformData == null
            ? transformData(key, incomingData)
            : streamsMapValues[key]!.transformData!(incomingData);

        if (interceptedData != null) {
          _dataMap![key] = interceptedData;
        } else {
          _dataMap![key] = incomingData;
        }

        notifyListeners();
        streamsMapValues[key]!.onData != null
            ? streamsMapValues[key]!.onData!(_dataMap![key])
            : onData(key, _dataMap![key]);
      },
      onError: (error) {
        setErrorForObject(key, error);
        _dataMap![key] = null;

        streamsMapValues[key]!.onError != null
            ? streamsMapValues[key]!.onError!(error)
            : onError(key, error);
        notifyListeners();
      },
    );
    streamsMapValues[key]!.onSubscribed != null
        ? streamsMapValues[key]!.onSubscribed!()
        : onSubscribed(key);
    changeSource = false;
  }
}