It is a package for using the camera in a simple and fast way.
- Display live camera preview in a widget.
 - Access the image and video stream.
 - Enable or disable Audio.
 - Change resolution image.
 - Change format image.
 - Change flash mode.
 - Change exposure mode.
 - Change focus mode.
 
dependencies:
  simple_camera: ^1.0.3
  ...- iOS
 
Add two rows to the ios/Runner/Info.plist:
- one with the key 
Privacy - Camera Usage Descriptionand a usage description. - and one with the key 
Privacy - Microphone Usage Descriptionand a usage description. 
If editing Info.plist as text, add:
<key>NSCameraUsageDescription</key>
<string>your usage description here</string>
<key>NSMicrophoneUsageDescription</key>
<string>your usage description here</string>- Android
 
Change the minimum SDK version to 21 (or higher) in android/app/build.gradle:
minSdkVersion 21
If you want to record videos with audio, add this permission to your AndroidManifest.xml:
To begin with, it's very simple, just import and instantiate SimpleCamera and then initialize it according to the example, after that you can use SimpleCameraPreview or create your own screen by calling simpleCamera.buildPreview()
class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});
  final String title;
  @override
  State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
  var simpleCamera = SimpleCamera();
  @override
  void initState() {
    super.initState();
    initSimpleCamera();
  }
  @override
  void dispose() {
    super.dispose();
    simpleCamera.dispose();
  }
  void initSimpleCamera() async {
    try {
      // Here you initialize the camera and pass some options, such as resolution, image format, etc..
      // If it does not inform any camera description, by default it starts with the front camera
      // To learn more, see the documentation.
      simpleCamera.initializeCamera().then((value) {
        setState(() {});
      });
    } catch (e) {
      // Important
      // Here you must give the permissions to access the device camera and or audio
    }
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SimpleCameraPreview(
        simpleCamera: simpleCamera,
        isFull: true,
        onPressedGallery: () {},
        onPressedVideoRecording: (xfile) {
          if (kDebugMode) {
            print(xfile?.name);
          }
        },
        onPressedTakePicture: (xfile) {
          if (kDebugMode) {
            print(xfile?.name);
          }
        },
      ),
    );
  }
}
Here are all the references you can use and what each one does
| Name | Return | Description | 
|---|---|---|
| availableCameras | List | returns all available cameras on the device | 
| initializeCamera | void | initialize the camera | 
| switchCamera | void | switch between back and front camera | 
| switchFlash | void | switch between flash modes | 
| startVideoStream | Stream | starts a stream of images from the video | 
| stopVideoStream | void | close the video stream | 
| startVideoRecording | void | starts recording a video | 
| stopVideoRecording | Future | finishes recording and returns the file | 
| startImageStream | Stream | returns an image stream | 
| setFlashMode | void | change flash mode | 
| setExposureMode | void | change the exposure mode | 
| setFocusMode | void | change focus mode | 
| buildPreview | Widget | returns a widget for the camera view | 
| dispose | void | discard the camera | 
| ----------------------- | --------------------------------- | ----------------------------------------------------------------------- |