listen method

Stream<Resource?> listen({
  1. required R5ResourceType resourceType,
  2. String? id,
  3. String? pw,
})

Implementation

Stream<Resource?> listen({
  required R5ResourceType resourceType,
  String? id,
  String? pw,
}) async* {
  await _ensureInit(pw: pw);
  final Box<Map<dynamic, dynamic>> box =
      await _getBox(resourceType: resourceType, pw: pw);

  if (id == null) {
    yield* box.watch().map((BoxEvent event) {
      if (!event.deleted) {
        return Resource.fromJson(
            jsonDecode(jsonEncode(event.value)) as Map<String, dynamic>);
      } else {
        return null;
      }
    });
  } else {
    yield* box.watch(key: id).map((BoxEvent event) {
      if (!event.deleted) {
        return Resource.fromJson(
            jsonDecode(jsonEncode(event.value)) as Map<String, dynamic>);
      } else {
        return null;
      }
    });
  }
}