feat: add sensor move mode to floor plan
This commit is contained in:
@@ -59,10 +59,7 @@ class _Body extends ConsumerWidget {
|
||||
OutlinedButton.icon(
|
||||
icon: const Icon(Icons.map_outlined),
|
||||
label: const Text('Locate on floor plan'),
|
||||
onPressed: () {
|
||||
ref.read(selectedSensorIdProvider.notifier).state = sensorId;
|
||||
context.go('/floorplan');
|
||||
},
|
||||
onPressed: () => context.go('/floorplan'),
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
OutlinedButton.icon(
|
||||
|
||||
@@ -20,7 +20,8 @@ class SensorDetailSheet extends ConsumerStatefulWidget {
|
||||
final int sensorId;
|
||||
|
||||
@override
|
||||
ConsumerState<SensorDetailSheet> createState() => _SensorDetailSheetState();
|
||||
ConsumerState<SensorDetailSheet> createState() =>
|
||||
_SensorDetailSheetState();
|
||||
}
|
||||
|
||||
class _SensorDetailSheetState extends ConsumerState<SensorDetailSheet> {
|
||||
@@ -196,7 +197,7 @@ class _SheetBody extends StatelessWidget {
|
||||
),
|
||||
const SizedBox(height: 24),
|
||||
FilledButton.icon(
|
||||
icon: const Icon(Icons.map_outlined),
|
||||
icon: Icon(Icons.my_location),
|
||||
label: Text(sensor.isPlaced
|
||||
? 'Reposition on floor plan'
|
||||
: 'Place on floor plan'),
|
||||
|
||||
@@ -12,28 +12,11 @@ class SensorListScreen extends ConsumerWidget {
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final sensors = ref.watch(sensorsProvider);
|
||||
final selectedId = ref.watch(selectedSensorIdProvider);
|
||||
|
||||
return Scaffold(
|
||||
appBar: AppBar(title: const Text('Sensors')),
|
||||
body: Column(
|
||||
children: [
|
||||
if (selectedId != null)
|
||||
MaterialBanner(
|
||||
content: Text('Sensor $selectedId selected on floor plan'),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () =>
|
||||
ref.read(selectedSensorIdProvider.notifier).state = null,
|
||||
child: const Text('Dismiss'),
|
||||
),
|
||||
TextButton(
|
||||
onPressed: () =>
|
||||
showSensorDetailSheet(context, int.parse(selectedId)),
|
||||
child: const Text('Open'),
|
||||
),
|
||||
],
|
||||
),
|
||||
Expanded(
|
||||
child: sensors.when(
|
||||
loading: () =>
|
||||
@@ -54,8 +37,6 @@ class SensorListScreen extends ConsumerWidget {
|
||||
label: 'Unplaced', count: unplaced.length),
|
||||
...unplaced.map((s) => _SensorTile(
|
||||
sensor: s,
|
||||
isSelected:
|
||||
selectedId == s.id.toString(),
|
||||
)),
|
||||
],
|
||||
if (placed.isNotEmpty) ...[
|
||||
@@ -63,8 +44,6 @@ class SensorListScreen extends ConsumerWidget {
|
||||
label: 'Placed', count: placed.length),
|
||||
...placed.map((s) => _SensorTile(
|
||||
sensor: s,
|
||||
isSelected:
|
||||
selectedId == s.id.toString(),
|
||||
)),
|
||||
],
|
||||
],
|
||||
@@ -108,7 +87,7 @@ class _SectionHeader extends StatelessWidget {
|
||||
}
|
||||
|
||||
class _SensorTile extends StatelessWidget {
|
||||
const _SensorTile({required this.sensor, required this.isSelected});
|
||||
const _SensorTile({required this.sensor, this.isSelected = false});
|
||||
|
||||
final Sensor sensor;
|
||||
final bool isSelected;
|
||||
|
||||
Reference in New Issue
Block a user