feat: display room name in sensor detail sheet
This commit is contained in:
@@ -52,7 +52,7 @@ class _SensorDetailSheetState extends ConsumerState<SensorDetailSheet> {
|
|||||||
context: context,
|
context: context,
|
||||||
builder: (ctx) => AlertDialog(
|
builder: (ctx) => AlertDialog(
|
||||||
title: const Text('Delete sensor?'),
|
title: const Text('Delete sensor?'),
|
||||||
content: const Text('This will unenrol the sensor from the system.'),
|
content: const Text('This will unenroll the sensor from the system.'),
|
||||||
actions: [
|
actions: [
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: () => Navigator.of(ctx).pop(false),
|
onPressed: () => Navigator.of(ctx).pop(false),
|
||||||
@@ -88,6 +88,7 @@ class _SensorDetailSheetState extends ConsumerState<SensorDetailSheet> {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final sensorAsync = ref.watch(sensorProvider(widget.sensorId));
|
final sensorAsync = ref.watch(sensorProvider(widget.sensorId));
|
||||||
|
final roomsAsync = ref.watch(roomsProvider);
|
||||||
|
|
||||||
return sensorAsync.when(
|
return sensorAsync.when(
|
||||||
loading: () => const SizedBox(
|
loading: () => const SizedBox(
|
||||||
@@ -102,8 +103,16 @@ class _SensorDetailSheetState extends ConsumerState<SensorDetailSheet> {
|
|||||||
// Keep controller in sync when not actively editing.
|
// Keep controller in sync when not actively editing.
|
||||||
if (!_editing) _nameCtrl.text = sensor.name ?? '';
|
if (!_editing) _nameCtrl.text = sensor.name ?? '';
|
||||||
|
|
||||||
|
final roomName = roomsAsync.whenOrNull(
|
||||||
|
data: (rooms) => rooms
|
||||||
|
.where((r) => r.id == sensor.roomId)
|
||||||
|
.firstOrNull
|
||||||
|
?.name,
|
||||||
|
);
|
||||||
|
|
||||||
return _SheetBody(
|
return _SheetBody(
|
||||||
sensor: sensor,
|
sensor: sensor,
|
||||||
|
roomName: roomName,
|
||||||
editing: _editing,
|
editing: _editing,
|
||||||
nameCtrl: _nameCtrl,
|
nameCtrl: _nameCtrl,
|
||||||
onEditToggle: () => setState(() {
|
onEditToggle: () => setState(() {
|
||||||
@@ -122,6 +131,7 @@ class _SensorDetailSheetState extends ConsumerState<SensorDetailSheet> {
|
|||||||
class _SheetBody extends StatelessWidget {
|
class _SheetBody extends StatelessWidget {
|
||||||
const _SheetBody({
|
const _SheetBody({
|
||||||
required this.sensor,
|
required this.sensor,
|
||||||
|
required this.roomName,
|
||||||
required this.editing,
|
required this.editing,
|
||||||
required this.nameCtrl,
|
required this.nameCtrl,
|
||||||
required this.onEditToggle,
|
required this.onEditToggle,
|
||||||
@@ -131,6 +141,7 @@ class _SheetBody extends StatelessWidget {
|
|||||||
});
|
});
|
||||||
|
|
||||||
final Sensor sensor;
|
final Sensor sensor;
|
||||||
|
final String? roomName;
|
||||||
final bool editing;
|
final bool editing;
|
||||||
final TextEditingController nameCtrl;
|
final TextEditingController nameCtrl;
|
||||||
final VoidCallback onEditToggle;
|
final VoidCallback onEditToggle;
|
||||||
@@ -192,6 +203,7 @@ class _SheetBody extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
const SizedBox(height: 16),
|
const SizedBox(height: 16),
|
||||||
_InfoRow(label: 'Device ID', value: sensor.sensorId),
|
_InfoRow(label: 'Device ID', value: sensor.sensorId),
|
||||||
|
_InfoRow(label: 'Room', value: roomName ?? '—'),
|
||||||
_InfoRow(
|
_InfoRow(
|
||||||
label: 'Position',
|
label: 'Position',
|
||||||
value: sensor.isPlaced
|
value: sensor.isPlaced
|
||||||
|
|||||||
Reference in New Issue
Block a user