toImage method
Implementation
Future<Uint8List> toImage(double devicePixelRatio,
[Pointer<Void>? eventTargetPointer]) {
assert(!_disposed, 'WebF have already disposed');
Completer<Uint8List> completer = Completer();
try {
if (eventTargetPointer != null && !hasBindingObject(eventTargetPointer)) {
String msg = 'toImage: unknown node id: $eventTargetPointer';
completer.completeError(Exception(msg));
return completer.future;
}
var node = eventTargetPointer == null
? document.documentElement
: getBindingObject(eventTargetPointer);
if (node is Element) {
SchedulerBinding.instance.addPostFrameCallback((_) {
node
.toBlob(devicePixelRatio: devicePixelRatio)
.then((Uint8List bytes) {
completer.complete(bytes);
}).catchError((e, stack) {
String msg =
'toBlob: failed to export image data from element id: $eventTargetPointer. error: $e}.\n$stack';
completer.completeError(Exception(msg));
});
});
SchedulerBinding.instance.scheduleFrame();
return completer.future;
} else {
String msg = 'toBlob: node is not an element, id: $eventTargetPointer';
completer.completeError(Exception(msg));
}
} catch (e, stack) {
completer.completeError(e, stack);
}
return completer.future;
}