captureScreenshot method
Future<CockpitCapturedScreenshot>
captureScreenshot(
- CockpitScreenshotRequest request, {
- double pixelRatio = 1.0,
Implementation
Future<CockpitCapturedScreenshot> captureScreenshot(
CockpitScreenshotRequest request, {
double pixelRatio = 1.0,
}) {
Rect? cropRect;
final cropLocator = request.cropLocator;
if (cropLocator != null) {
final resolution = _registry.resolve(cropLocator);
final geometry = resolution.target == null
? null
: CockpitTargetGeometryResolver.maybeFromTarget(resolution.target!);
final viewport = _viewportGeometry();
if (!resolution.isSuccess || geometry == null || viewport == null) {
throw StateError('Screenshot crop locator has no visible geometry.');
}
final target = Rect.fromLTWH(
geometry.left,
geometry.top,
geometry.width,
geometry.height,
);
final viewportRect = Rect.fromLTWH(
viewport.left,
viewport.top,
viewport.width,
viewport.height,
);
final visible = target.intersect(viewportRect);
if (visible.isEmpty) {
throw StateError(
'Screenshot crop locator is outside the Flutter view.',
);
}
cropRect = visible.shift(Offset(-viewport.left, -viewport.top));
}
return _capture.capture(
repaintBoundaryKey: _boundaryKey,
request: request,
snapshot: request.includeSnapshot
? snapshot(
options:
request.snapshotOptions ??
const CockpitSnapshotOptions.live(),
)
: null,
pixelRatio: pixelRatio,
cropRect: cropRect,
);
}