lives<R> method

  1. @override
Stream<Response<T>> lives<R>({
  1. bool onlyUpdatedData = false,
  2. Map<String, dynamic>? extra,
  3. R? source(
    1. R parent
    )?,
})
override

Implementation

@override
Stream<Response<T>> lives<R>({
  bool onlyUpdatedData = false,
  Map<String, dynamic>? extra,
  R? Function(R parent)? source,
}) {
  final controller = StreamController<Response<T>>();
  final response = Response<T>();
  try {
    _source(source).snapshots().listen((event) {
      if (event.docs.isNotEmpty || event.docChanges.isNotEmpty) {
        if (onlyUpdatedData) {
          List<T> list = event.docChanges.map((e) {
            return build(e.doc.data());
          }).toList();
          controller.add(response.copy(result: list));
        } else {
          List<T> list = event.docs.map((e) {
            return build(e.data());
          }).toList();
          controller.add(response.copy(result: list));
        }
      } else {
        controller.addError("Data not found!");
      }
    });
  } catch (_) {
    controller.addError(_);
  }

  return controller.stream;
}