Files
absensi_sas_flutter/lib/provider/camera_controller_provider.dart

39 lines
1.0 KiB
Dart

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<CameraControllerNotifier, CameraController?>(
(ref) => CameraControllerNotifier());
class CameraControllerNotifier extends StateNotifier<CameraController?> {
CameraControllerNotifier() : super(null);
Future<void> initializeCamera(CameraDescription camera) async {
final controller = CameraController(camera, ResolutionPreset.medium);
await controller.initialize();
state = controller;
}
Future<String> 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();
}
}