takeScreenshot function

Future<void> takeScreenshot({
  1. dynamic withWidgetTreeRender = false,
  2. dynamic prefix = '',
})

Implementation

Future<void> takeScreenshot({withWidgetTreeRender = false, prefix = ''}) async {
  await currentWorld.tester.pumpAndSettle();
  RenderObject? renderObject = _getMainWidget()?.renderObject;
  if (renderObject != null) {
    RenderRepaintBoundary boundary = renderObject as RenderRepaintBoundary;
    ui.Image image = await boundary.toImage();
    ByteData? byteData = await image.toByteData(format: ui.ImageByteFormat.png);
    Uint8List pngBytes = byteData!.buffer.asUint8List();
    final screenshotFile =
        _getReportFolderPath(filenamePrefix: prefix, fileExtension: 'png');
    await screenshotFile.writeAsBytes(pngBytes);
    currentWorld.reportFilesPath.add(screenshotFile.path);
    currentWorld.screenshot = screenshotFile;
    if (withWidgetTreeRender) {
      await dumpWidgetRender(prefix: prefix);
    }
  } else {
    logger.e('Screenshot failed.');
  }
}