A flutter plugin to handle Android / iOS camera
Flutter plugin to add Camera support inside your project.
CamerAwesome include a lot of useful features like:
Taking photo ๐ธ & record video ๐ฅ | Resolution changing ๐ |
![]() |
![]() |
ios/Runner/Info.plistfile
NSCameraUsageDescription Your own descriptionNSMicrophoneUsageDescription To enable microphone access when recording video
Android
android/app/build.gradle
minSdkVersion 21
import 'package:camerawesome/camerawesome_plugin.dart';
ValueNotifier is a useful change notifier from Flutter framework. It fires an event on all listener when value changes. Take a look here for ValueNotifier doc
class MyApp extends StatefulWidget { @override _MyAppState createState() => _MyAppState(); }class _MyAppState extends State with TickerProviderStateMixin { // [...] // Notifiers ValueNotifier _switchFlash = ValueNotifier(CameraFlashes.NONE); ValueNotifier _sensor = ValueNotifier(Sensors.BACK); ValueNotifier _captureMode = ValueNotifier(CaptureModes.PHOTO); ValueNotifier _photoSize = ValueNotifier(null);
// Controllers PictureController _pictureController = new PictureController(); VideoController _videoController = new VideoController(); // [...] }
If you want to change a config, all you need is setting the value. CameraAwesome will handle the rest.
Examples:
dart _switchFlash.value = CameraFlashes.AUTO; _captureMode.value = CaptureModes.VIDEO;
// [...] @override Widget build(BuildContext context) { return CameraAwesome( testMode: false, onPermissionsResult: (bool result) { }, selectDefaultSize: (List availableSizes) => Size(1920, 1080), onCameraStarted: () { }, onOrientationChanged: (CameraOrientations newOrientation) { }, zoom: 0.64, sensor: _sensor, photoSize: _photoSize, switchFlashMode: _switchFlash, captureMode: _captureMode, orientation: DeviceOrientation.portraitUp, fitted: true, ); }; // [...]
Param | Type | Description | Required |
---|---|---|---|
testMode | boolean |
true to wrap texture | |
onPermissionsResult | OnPermissionsResult |
implement this to have a callback after CameraAwesome asked for permissions | |
selectDefaultSize | OnAvailableSizes |
implement this to select a default size from device available size list | โ |
onCameraStarted | OnCameraStarted |
notify client that camera started | |
onOrientationChanged | OnOrientationChanged |
notify client that orientation changed | |
switchFlashMode | **ValueNotifier**<cameraflashes> |
change flash mode | |
zoom | ValueNotifier<double> |
Zoom from native side. Must be between 0 and 1 | |
sensor | ValueNotifier<sensors> |
sensor to initiate BACK or FRONT | โ |
photoSize | ValueNotifier<size> |
choose your photo size from the [selectDefaultSize] method | |
captureMode | ValueNotifier<capturemodes> |
choose capture mode between PHOTO or VIDEO | |
orientation | DeviceOrientation |
initial orientation | |
fitted | bool |
whether camera preview must be as big as it needs or cropped to fill with. false by default | |
imagesStreamBuilder | Function |
returns an imageStream when camera has started preview |
await _pictureController.takePicture('THE_IMAGE_PATH/myimage.jpg');
await _videoController.recordVideo('THE_IMAGE_PATH/myvideo.mp4');
await _videoController.stopRecordingVideo();
The property imagesStreamBuilder allows you to get an imageStream once the camera is ready. Don't try to show all these images on Flutter UI as you won't have time to refresh UI fast enough. (there is too much images/sec).
CameraAwesome( ... imagesStreamBuilder: (imageStream) { /// listen for images preview stream /// you can use it to process AI recognition or anything else... print('-- init CamerAwesome images stream'); }, )
CamerAwesome was developed to support most devices on the market but some feature can't be fully functional. You can check if your device support all feature by clicking bellow.
Feel free to contribute to improve this compatibility list.
Devices | Flash | Focus | Zoom | Flip |
---|---|---|---|---|
iPhone X | โ | โ | โ | โ |
iPhone 7 | โ | โ | โ | โ |
One Plus 6T | โ | โ | โ | โ |
Xiaomi redmi | โ | โ | โ | โ |
Honor 7 | โ | โ | โ | โ |
Feel free to help by submitting PR !
Initiated and sponsored by Apparence.io.
Contributions are welcome. Contribute by creating a PR or create an issue ๐.