generateImageFromGlobalKey static method

Future<ImageElement?> generateImageFromGlobalKey(
  1. GlobalKey<State<StatefulWidget>> globalKey, [
  2. ImageElement? imageElement
])

to capture widget to image by GlobalKey in RenderRepaintBoundary

Implementation

static Future<ImageElement?> generateImageFromGlobalKey(wid.GlobalKey globalKey, [ImageElement? imageElement]) async {
  try {
    /// boundary widget by GlobalKey
    rend.RenderRepaintBoundary? boundary = globalKey.currentContext?.findRenderObject() as rend.RenderRepaintBoundary?;

    /// convert boundary to image
    final image = await boundary!.toImage();

    /// set ImageByteFormat
    final data = (await image.toByteData(format: ui.ImageByteFormat.rawRgba))?.buffer.asUint8List();
    if(data == null){
      return null;
    }
    else if(imageElement != null){
      imageElement.width = image.width;
      imageElement.height = image.height;
      if(imageElement.data == null){
        imageElement.data = Uint8Array.fromList(data);
      }
      else{
        (imageElement.data as Uint8Array).set(data);
      }
      return imageElement;
    }
    return ImageElement(
      width: image.width,
      height: image.height,
      data: Uint8Array.fromList(data)
    );

  } catch (e) {
    rethrow;
  }
}