import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../core/providers/bt_provider.dart'; import '../../core/providers/datalog_provider.dart'; class RecordFab extends ConsumerWidget { const RecordFab({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { final recording = ref.watch(recordingProvider); final bt = ref.watch(btProvider); // Only show when BT is connected if (!bt.isConnected) return const SizedBox.shrink(); final isRecording = recording.isRecording; return FloatingActionButton( heroTag: 'record_fab', backgroundColor: isRecording ? Colors.red : Theme.of(context).colorScheme.primary, onPressed: () async { if (isRecording) { await ref.read(recordingProvider.notifier).stopRecording(); if (context.mounted) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( 'Session saved — ${recording.frameCount} frames', ), duration: const Duration(seconds: 2), ), ); } } else { await ref.read(recordingProvider.notifier).startRecording(); } }, tooltip: isRecording ? 'Stop recording' : 'Start recording', child: AnimatedSwitcher( duration: const Duration(milliseconds: 200), child: isRecording ? const Icon(Icons.stop, key: ValueKey('stop')) : const Icon(Icons.fiber_manual_record, key: ValueKey('rec')), ), ); } }