Video Recording w/ Camera

Jun's Coding Journey·2023년 9월 13일
0

[Learn] Flutter

목록 보기
18/22

Camera Plugin


A Flutter plugin for iOS, Android and Web allowing access to the device cameras.

flutter pub add camera

 

Camera Controller


Permission Handler

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(() {});
    }
  }

 

Finding Available Cameras

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;
}

 

Selfie Mode


Future<void> _toggleSelfieMode() async {
  _isSelfieMode = !_isSelfieMode;
  await initCamera();
  setState(() {});
}

IconButton(
  color: Colors.white,
  onPressed: _toggleSelfieMode,
  icon: const Icon(
    Icons.cameraswitch,
  ),
),

 

Flash Mode


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

 

Image Picker


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

 

profile
Greatness From Small Beginnings

0개의 댓글