getBase64Screenshot static method
Implementation
static Future<String> getBase64Screenshot() async {
try {
await loadHtml2Canvas();
final html2canvasFunc =
web.window.getProperty("html2canvas".toJS) as JSFunction?;
if (html2canvasFunc == null) {
PlotlineLogger.log("html2canvas is not defined even after loading.");
}
final body = web.document.body;
if (body == null) {
PlotlineLogger.log("document.body is null. Cannot capture screenshot.");
}
// Get the Promise from html2canvas
final canvasPromise =
html2canvasFunc?.callAsFunction(null, body) as JSPromise?;
// Wait for the Promise to resolve
final canvas = await canvasPromise!.toDart;
if (canvas.isNull) {
PlotlineLogger.log("html2canvas returned null canvas.");
}
final dataUrl = (canvas as JSObject)
.callMethod('toDataURL'.toJS, ['image/png'.toJS].toJS)
.toString();
if (dataUrl.isEmpty) {
PlotlineLogger.log("Failed to convert canvas to data URL.");
return "";
}
return dataUrl.toString();
} catch (error, stackTrace) {
PlotlineLogger.log("Error in getBase64Screenshot: $error");
PlotlineLogger.log("Stack trace: $stackTrace");
return "";
}
}