import 'package:camera/camera.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:path_provider/path_provider.dart'; import 'package:path/path.dart' as p; final cameraControllerProvider = StateNotifierProvider( (ref) => CameraControllerNotifier()); class CameraControllerNotifier extends StateNotifier { CameraControllerNotifier() : super(null); Future initializeCamera(CameraDescription camera) async { final controller = CameraController(camera, ResolutionPreset.medium); await controller.initialize(); state = controller; } Future takePicture() async { if (state == null || !state!.value.isInitialized) { throw Exception('Camera is not initialized'); } final path = p.join( (await getTemporaryDirectory()).path, '${DateTime.now()}.png', ); await state!.takePicture(); return path; } @override void dispose() { state?.dispose(); super.dispose(); } }