buildBody method
Implementation
Widget buildBody(BuildContext context) {
return LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
Widget previewWidget = ExcludeSemantics(
child: buildInitializeWrapper(
builder: (CameraValue v, Widget? w) {
if (enableScaledPreview) {
return buildCameraPreview(
context: context,
cameraValue: v,
constraints: constraints,
);
}
return Align(
alignment: {
DeviceOrientation.portraitUp: Alignment.topCenter,
DeviceOrientation.portraitDown: Alignment.bottomCenter,
DeviceOrientation.landscapeLeft: Alignment.centerLeft,
DeviceOrientation.landscapeRight: Alignment.centerRight,
}[v.deviceOrientation]!,
child: AspectRatio(
aspectRatio:
v.deviceOrientation.toString().contains('portrait')
? 1 / v.aspectRatio
: v.aspectRatio,
child: LayoutBuilder(
builder: (BuildContext c, BoxConstraints constraints) {
return buildCameraPreview(
context: c,
cameraValue: v,
constraints: constraints,
);
},
),
),
);
},
),
);
if (!enableScaledPreview) {
previewWidget = Semantics(
label: textDelegate.sCameraPreviewLabel(
innerController?.description.lensDirection,
),
image: true,
onTap: () {
// Focus on the center point when using semantics tap.
final size = MediaQuery.sizeOf(context);
final details = TapUpDetails(
kind: PointerDeviceKind.touch,
globalPosition: Offset(size.width / 2, size.height / 2),
);
requestFocusAndExposureOnPosition(
details.localPosition,
constraints,
);
},
onTapHint: textDelegate.sActionManuallyFocusHint,
sortKey: const OrdinalSortKey(1),
hidden: innerController == null,
excludeSemantics: true,
child: previewWidget,
);
}
return Stack(
fit: StackFit.expand,
alignment: Alignment.center,
children: <Widget>[
previewWidget,
if (enableScaledPreview) ...<Widget>[
if (pickerConfig.enableSetExposure)
buildExposureDetector(context, constraints),
buildInitializeWrapper(
builder: (CameraValue v, _) => buildFocusingPoint(
cameraValue: v,
constraints: constraints,
),
),
if (pickerConfig.foregroundBuilder != null)
Positioned.fill(
child:
pickerConfig.foregroundBuilder!(context, innerController),
),
],
if (innerController == null)
buildForegroundBody(context, constraints, null)
else
buildInitializeWrapper(
builder: (CameraValue v, _) => buildForegroundBody(
context,
constraints,
v.deviceOrientation,
),
),
],
);
},
);
}