captureAsUiImage method
Implementation
Future<ui.Image?> captureAsUiImage({
double? pixelRatio,
Duration delay = const Duration(milliseconds: 20),
}) =>
//Delay is required. See Issue https://github.com/flutter/flutter/issues/22308
Future.delayed(delay, () async {
try {
final findRenderObject =
_containerKey.currentContext?.findRenderObject();
if (findRenderObject == null) {
return null;
}
final boundary = findRenderObject as RenderRepaintBoundary;
final context = _containerKey.currentContext;
var pixelRatioValue = pixelRatio;
if (pixelRatioValue == null && context != null && context.mounted) {
pixelRatioValue = MediaQuery.of(context).devicePixelRatio;
}
return await boundary.toImage(pixelRatio: pixelRatioValue ?? 1);
} catch (exception) {
_logger.severe('Failed to capture screenshot: $exception');
}
return null;
});