| # Camera Plugin | 
 |  | 
 | [](https://pub.dartlang.org/packages/camera) | 
 |  | 
 | A Flutter plugin for iOS and Android allowing access to the device cameras. | 
 |  | 
 | ## Features: | 
 |  | 
 | * Display live camera preview in a widget. | 
 | * Snapshots can be captured and saved to a file. | 
 |  | 
 | ## Installation | 
 |  | 
 | First, add `camera` as a [dependency in your pubspec.yaml file](https://flutter.io/using-packages/). | 
 |  | 
 | ### iOS | 
 |  | 
 | Add two rows to the `ios/Runner/Info.plist`: | 
 |  | 
 | * one with the key `Privacy - Camera Usage Description` and a usage description. | 
 | * and one with the key `Privacy - Microphone Usage Description` and a usage description. | 
 |  | 
 | Or in text format add the key: | 
 |  | 
 | ```xml | 
 | <key>NSCameraUsageDescription</key> | 
 | <string>Can I use the camera please?</string> | 
 | <key>NSMicrophoneUsageDescription</key> | 
 | <string>Can I use the mic please?</string> | 
 | ``` | 
 |  | 
 | ### Android | 
 |  | 
 | Change the minimum Android sdk version to 21 (or higher) in your `android/app/build.gradle` file. | 
 |  | 
 | ``` | 
 | minSdkVersion 21 | 
 | ``` | 
 |  | 
 | ### Example | 
 |  | 
 | Here is a small example flutter app displaying a full screen camera preview. | 
 |  | 
 | ```dart | 
 | import 'dart:async'; | 
 | import 'package:flutter/material.dart'; | 
 | import 'package:camera/camera.dart'; | 
 |  | 
 | List<CameraDescription> cameras; | 
 |  | 
 | Future<void> main() async { | 
 |   cameras = await availableCameras(); | 
 |   runApp(CameraApp()); | 
 | } | 
 |  | 
 | class CameraApp extends StatefulWidget { | 
 |   @override | 
 |   _CameraAppState createState() => _CameraAppState(); | 
 | } | 
 |  | 
 | class _CameraAppState extends State<CameraApp> { | 
 |   CameraController controller; | 
 |  | 
 |   @override | 
 |   void initState() { | 
 |     super.initState(); | 
 |     controller = CameraController(cameras[0], ResolutionPreset.medium); | 
 |     controller.initialize().then((_) { | 
 |       if (!mounted) { | 
 |         return; | 
 |       } | 
 |       setState(() {}); | 
 |     }); | 
 |   } | 
 |  | 
 |   @override | 
 |   void dispose() { | 
 |     controller?.dispose(); | 
 |     super.dispose(); | 
 |   } | 
 |  | 
 |   @override | 
 |   Widget build(BuildContext context) { | 
 |     if (!controller.value.isInitialized) { | 
 |       return Container(); | 
 |     } | 
 |     return AspectRatio( | 
 |         aspectRatio: | 
 |         controller.value.aspectRatio, | 
 |         child: CameraPreview(controller)); | 
 |   } | 
 | } | 
 | ``` | 
 |  | 
 | For a more elaborate usage example see [here](https://github.com/flutter/plugins/tree/master/packages/camera/example). | 
 |  | 
 | *Note*: This plugin is still under development, and some APIs might not be available yet. | 
 | [Feedback welcome](https://github.com/flutter/flutter/issues) and | 
 | [Pull Requests](https://github.com/flutter/plugins/pulls) are most welcome! |