buildBody method

Widget buildBody(
  1. BuildContext context
)

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 size = MediaQuery.of(context).size;
            final TapUpDetails 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,
              ),
            ),
        ],
      );
    },
  );
}