Пакетный вызов camera_camera https://pub.dev/packages/camera_camera
отлично справился с работой и предоставил отличную функцию, позволяющую напрямую ссылаться на его исходный код или ответвление.
о проблеме поворота, пожалуйста, используйте этот пакет https://pub.dev/packages/native_device_orientation
и оберните тело следующим образом
return Scaffold(
body: NativeDeviceOrientationReader(builder: (context) {
NativeDeviceOrientation orientation =
NativeDeviceOrientationReader.orientation(context);
полный код можно указать по https://github.com/marslord/camera/blob/master/lib/cam.dart, это не пакет camera_camera, и автор использует RotateBox
return RotatedBox(
quarterTurns: turns,
child: Transform.scale(
scale: 1 / controller.value.aspectRatio,
child: Center(
child: AspectRatio(
aspectRatio: controller.value.aspectRatio,
child: CameraPreview(controller),
),
),
),
);
camera_camera использует это в строке 76
return NativeDeviceOrientationReader(
useSensor: true,
builder: (context) {
NativeDeviceOrientation orientation =
NativeDeviceOrientationReader.orientation(context);
о проблеме с размером экрана
пакет camera_camera делаетэто с кодом ниже полный код здесь https://github.com/gabuldev/camera_camera/blob/master/lib/page/camera.dart
return widget.mode ==
CameraMode.fullscreen
? OverflowBox(
maxHeight: size.height,
maxWidth: size.height *
previewRatio,
child: CameraPreview(
bloc.controllCamera),
)
: AspectRatio(
aspectRatio: bloc
.controllCamera
.value
.aspectRatio,
child: CameraPreview(
bloc.controllCamera),
);
Выполнить результат пакета camera_camera можно найти на его github
Выполнить результат https://github.com/marslord/camera
и проверка с реальным устройством, и работает
официальный пример плагина камеры rotate image может работать с объединением Native_device_orientation и RotateBox, вы можете ссылаться https://github.com/marslord/camera/blob/master/lib/cam.dart
, но в официальном примере плагина камеры проблема с подгонкой экрана потребует изменения кода макета
Я бы предложил использовать метод camera_camera, Stack CameraPreview и Button.он больше похож на приложение Native Camera и прост в обслуживании ландшафтного режима.
Официальный пример плагина камеры. Поворот фрагмента кода изображения с объединением Native_device_orientation и RotateBox
@override
Widget build(BuildContext context) {
return Scaffold(
key: _scaffoldKey,
appBar: AppBar(
title: const Text('Camera example'),
),
body: NativeDeviceOrientationReader(builder: (context) {
NativeDeviceOrientation orientation =
NativeDeviceOrientationReader.orientation(context);
int turns;
switch (orientation) {
case NativeDeviceOrientation.landscapeLeft:
turns = -1;
break;
case NativeDeviceOrientation.landscapeRight:
turns = 1;
break;
case NativeDeviceOrientation.portraitDown:
turns = 2;
break;
default:
turns = 0;
break;
}
return Column(
children: <Widget>[
Expanded(
child: RotatedBox(
quarterTurns: turns,
child: Transform.scale(
scale: 1 / controller.value.aspectRatio,
child: Container(
child: Padding(
padding: const EdgeInsets.all(1.0),
child: AspectRatio(
aspectRatio: controller.value.aspectRatio,
child: Center(
child: _cameraPreviewWidget(),
),
),
),