// One signal's current state as a display needs it: value, and whether to draw it dim // (missing, stale or known-without-value; app guideline 2). import 'boundary.dart'; /// One signal's current state, as the dash needs it. class Reading { const Reading(this.value, {this.dim = false}); /// The value, or null when missing or known-without-value. final Object? value; /// Missing or stale: drawn in subdued. final bool dim; static Reading of(Boundary b, String name) { final e = b.signals[name]; if (e is! Map) return const Reading(null, dim: true); final q = e['quality'] as String? ?? 'ok'; return Reading(e['value'], dim: q != 'ok' || e['value'] == null); } double? get number => value is num ? (value as num).toDouble() : null; bool get on => value == true; String fixed([int decimals = 0]) => number == null ? '—' : number!.toStringAsFixed(decimals); }