Integrei o pacote de câmera do pub.dev para usá-lo em um widget de contêiner na tela inicial do meu aplicativo. O aplicativo foi projetado para portrait up
isso, aliás.
O problema é que, ao girar o celular para a horizontal (estou testando no iPhone 11), a pré-visualização da câmera tenta ser horizontal. Mas o aplicativo suporta apenas a orientação vertical, o que faz com que a imagem exibida fique quebrada, como se estivesse muito esticada no recipiente.
Meu código para inicializar o controlador da câmera é o seguinte:
/// Initialize the camera.
Future<void> initializeCamera() async {
await controller?.dispose();
_cameraException = null;
controller = CameraController(
_cameras[_currentCameraIndex],
ResolutionPreset.max,
enableAudio: false,
);
await controller!
.initialize()
.then((value) {
// Camera initialized successfully.
notifyListeners();
})
.catchError((Object e) {
if (e is CameraException) {
switch (e.code) {
case 'CameraAccessDeniedWithoutPrompt':
case 'CameraAccessDenied':
cameraException = AppCameraException.cameraAccessDenied;
case 'AudioAccessDenied':
case 'AudioAccessDeniedWithoutPrompt':
cameraException = AppCameraException.audioAccessDenied;
default:
cameraException = AppCameraException.unknown;
}
}
});
}
A solução é ligar
Mas é importante chamar
lockCaptureOrientation
depois de inicializar o controlador da câmera.Caso contrário, não funciona.