takePicture static method

Future<File?> takePicture()

Capture image from camera

Implementation

static Future<File?> takePicture() async {
  if (!_isCapturing) {
    _isCapturing = true;
    try {
      // Verify camera is initialized
      if (_cameraController == null) {
        print('Cannot take picture: Camera controller is null');
        return null;
      }

      bool isInitialized = false;
      try {
        isInitialized = _cameraController!.value.isInitialized;
      } catch (e) {
        print('Error checking camera initialization before capture: $e');
        return null;
      }

      if (!isInitialized) {
        print('Cannot take picture: Camera is not initialized');
        return null;
      }

      XFile file = await _cameraController!.takePicture();
      final bytes = await file.readAsBytes();
      final fileSize = await file.length();
      return File(
          file.name, file.path.split('.').last, fileSize, file.path, bytes);
    } catch (e) {
      print('Capture error: $e');
      return null;
    } finally {
      _isCapturing = false;
    }
  }
  return null;
}