A Flutter plugin for iOS, Android and Web allowing access to the device cameras.
flutter pub add camera
On most operating systems, permissions aren't just granted to apps at install time. Rather, developers have to ask the user for permissions while the app is running.
This plugin provides a cross-platform (iOS, Android) API to request permissions and check their status. You can also open the device's app settings so users can grant a permission.
On Android, you can show a rationale for requesting a permission.
flutter pub add permission_handler
bool _hasPermission = false;
Future<void> initPermissions() async {
final cameraPermission = await Permission.camera.request();
final micPermission = await Permission.microphone.request();
final cameraDenied =
cameraPermission.isDenied || cameraPermission.isPermanentlyDenied;
final micDenied =
micPermission.isDenied || micPermission.isPermanentlyDenied;
if (!cameraDenied && !micDenied) {
_hasPermission = true;
await initCamera();
setState(() {});
}
}
bool _isSelfieMode = false;
late FlashMode _flashMode;
late CameraController _cameraController;
Future<void> initCamera() async {
final cameras = await availableCameras();
if (cameras.isEmpty) {
return;
}
_cameraController = CameraController(
cameras[_isSelfieMode ? 1 : 0],
ResolutionPreset.ultraHigh,
);
await _cameraController.initialize();
_flashMode = _cameraController.value.flashMode;
}
Future<void> _toggleSelfieMode() async {
_isSelfieMode = !_isSelfieMode;
await initCamera();
setState(() {});
}
IconButton(
color: Colors.white,
onPressed: _toggleSelfieMode,
icon: const Icon(
Icons.cameraswitch,
),
),
late FlashMode _flashMode;
Future<void> _setFlashMode(FlashMode newFlashMode) async {
await _cameraController.setFlashMode(newFlashMode);
_flashMode = newFlashMode;
setState(() {});
}
IconButton(
color: Colors.white,
onPressed: _toggleSelfieMode,
icon: const Icon(
Icons.cameraswitch,
),
),
Gaps.v10,
IconButton(
color: _flashMode == FlashMode.off
? Colors.yellow
: Colors.white,
onPressed: () => _setFlashMode(FlashMode.off),
icon: const Icon(
Icons.flash_off_rounded,
),
),
Gaps.v10,
IconButton(
color: _flashMode == FlashMode.always
? Colors.yellow
: Colors.white,
onPressed: () => _setFlashMode(FlashMode.always),
icon: const Icon(
Icons.flash_on_rounded,
),
),
Gaps.v10,
IconButton(
color: _flashMode == FlashMode.auto
? Colors.yellow
: Colors.white,
onPressed: () => _setFlashMode(FlashMode.auto),
icon: const Icon(
Icons.flash_auto_rounded,
),
),
Gaps.v10,
IconButton(
color: _flashMode == FlashMode.torch
? Colors.yellow
: Colors.white,
onPressed: () => _setFlashMode(FlashMode.torch),
icon: const Icon(
Icons.flashlight_on_rounded,
),
),
Saves images and videos from network or temporary file to external storage. Both images and videos will be visible in Android Gallery and iOS Photos.
flutter pub add gallery_saver
A Flutter plugin for iOS and Android for picking images from the image library, and taking new pictures with the camera.
flutter pub add image_picker
Technology: Fields such as software development, cybersecurity, and data analysis are booming.
Healthcare: Nursing, physical therapy, and healthcare administration are in high demand.
Finance: Roles in financial planning, investment banking, and accounting offer lucrative opportunities. best crypto presales