import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../providers/map_provider.dart'; class MapControls extends ConsumerWidget { const MapControls({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { final isLocating = ref.watch(mapProvider.select((s) => s.isLocating)); return Positioned( right: 16, bottom: 120, child: Column( mainAxisSize: MainAxisSize.min, children: [ FloatingActionButton.small( heroTag: 'zoom_in', onPressed: () => ref.read(mapProvider.notifier).zoomIn(), child: const Icon(Icons.add), ), const SizedBox(height: 8), FloatingActionButton.small( heroTag: 'zoom_out', onPressed: () => ref.read(mapProvider.notifier).zoomOut(), child: const Icon(Icons.remove), ), const SizedBox(height: 16), FloatingActionButton.small( heroTag: 'locate_me', onPressed: isLocating ? null : () => ref.read(mapProvider.notifier).locateUser(), child: isLocating ? const SizedBox( width: 20, height: 20, child: CircularProgressIndicator(strokeWidth: 2), ) : const Icon(Icons.my_location), ), ], ), ); } }