import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:mirror_ui/mirror_ui.dart'; import '../providers/ha_provider.dart'; class WeatherPickerScreen extends ConsumerStatefulWidget { final String? selectedEntityId; const WeatherPickerScreen({super.key, this.selectedEntityId}); @override ConsumerState createState() => _WeatherPickerScreenState(); } class _WeatherPickerScreenState extends ConsumerState { String? _selected; @override void initState() { super.initState(); _selected = widget.selectedEntityId; } @override Widget build(BuildContext context) { final entitiesAsync = ref.watch(haEntitiesProvider); return Scaffold( appBar: AppBar( title: const Text('Select Weather Entity'), backgroundColor: MirrorTheme.background, actions: [ TextButton( onPressed: _selected != null ? () => Navigator.of(context).pop(_selected) : null, child: const Text('Done'), ), ], ), backgroundColor: MirrorTheme.background, body: entitiesAsync.when( loading: () => const Center(child: CircularProgressIndicator()), error: (e, _) => Center(child: Text('Error: $e')), data: (state) { if (state.error != null) { return Center(child: Text(state.error!)); } final weatherEntities = state.entities .where((e) => e.entityId.startsWith('weather.')) .toList(); if (weatherEntities.isEmpty) { return const Center( child: Text('No weather entities found in Home Assistant'), ); } return ListView.builder( padding: const EdgeInsets.all(12), itemCount: weatherEntities.length, itemBuilder: (context, index) { final entity = weatherEntities[index]; final name = (entity.attributes['friendly_name'] as String?) ?? entity.entityId; return RadioListTile( title: Text(name), subtitle: Text(entity.entityId), value: entity.entityId, groupValue: _selected, activeColor: MirrorTheme.accent, onChanged: (value) => setState(() => _selected = value), ); }, ); }, ), ); } }