wiredash-sdk icon indicating copy to clipboard operation
wiredash-sdk copied to clipboard

Creating a screenshot crashes on web for HTML elements

Open passsy opened this issue 4 years ago • 2 comments

My Flutter Web app contains plain old HTML elements. Taking a screenshot doesn't work and it then crashes when saving it with drawings

Unexpected null value.

dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 236:49      throw_
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 518:63  nullCheck
lib/_engine/engine/canvaskit/layer.dart 553:27                                    preroll
lib/_engine/engine/canvaskit/layer.dart 120:12                                    prerollChildren
lib/_engine/engine/canvaskit/layer.dart 339:38                                    preroll
lib/_engine/engine/canvaskit/layer.dart 120:12                                    prerollChildren
lib/_engine/engine/canvaskit/layer.dart 465:5                                     preroll
lib/_engine/engine/canvaskit/layer.dart 120:12                                    prerollChildren
lib/_engine/engine/canvaskit/layer.dart 339:38                                    preroll
lib/_engine/engine/canvaskit/layer.dart 120:12                                    prerollChildren
lib/_engine/engine/canvaskit/layer.dart 339:38                                    preroll
lib/_engine/engine/canvaskit/layer.dart 120:12                                    prerollChildren
lib/_engine/engine/canvaskit/layer.dart 465:5                                     preroll
lib/_engine/engine/canvaskit/layer.dart 120:12                                    prerollChildren
lib/_engine/engine/canvaskit/layer.dart 339:38                                    preroll
lib/_engine/engine/canvaskit/layer.dart 120:12                                    prerollChildren
lib/_engine/engine/canvaskit/layer.dart 339:38                                    preroll
lib/_engine/engine/canvaskit/layer.dart 120:12                                    prerollChildren
lib/_engine/engine/canvaskit/layer.dart 465:5                                     preroll
lib/_engine/engine/canvaskit/layer.dart 120:12                                    prerollChildren
lib/_engine/engine/canvaskit/layer.dart 339:38                                    preroll
lib/_engine/engine/canvaskit/layer.dart 120:12                                    prerollChildren
lib/_engine/engine/canvaskit/layer.dart 339:38                                    preroll
lib/_engine/engine/canvaskit/layer.dart 120:12                                    prerollChildren
lib/_engine/engine/canvaskit/layer.dart 339:38                                    preroll
lib/_engine/engine/canvaskit/layer.dart 120:12                                    prerollChildren
lib/_engine/engine/canvaskit/layer.dart 339:38                                    preroll
lib/_engine/engine/canvaskit/layer.dart 120:12                                    prerollChildren
lib/_engine/engine/canvaskit/layer.dart 109:19                                    preroll
lib/_engine/engine/canvaskit/layer_tree.dart 65:15                                flatten
lib/_engine/engine/canvaskit/layer_scene_builder.dart 18:36                       toImage
packages/flutter/src/rendering/layer.dart 1173:25                                 toImage
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54                runBody
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 123:5                _async
packages/flutter/src/rendering/layer.dart 1157:27                                 toImage
packages/flutter/src/rendering/proxy_box.dart 3090:23                             toImage
packages/wiredash/src/capture/screenshot/screenshot.dart 51:37                    _captureScreen
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54                runBody
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 123:5                _async
packages/wiredash/src/capture/screenshot/screenshot.dart 44:30                    [_captureScreen]
packages/wiredash/src/capture/screenshot/screenshot.dart 37:33                    <fn>
dart-sdk/lib/async/zone.dart 1346:47                                              _rootRun
dart-sdk/lib/async/zone.dart 1258:19                                              run
dart-sdk/lib/async/zone.dart 1162:7                                               runGuarded
dart-sdk/lib/async/zone.dart 1202:23                                              <fn>
dart-sdk/lib/async/zone.dart 1354:13                                              _rootRun
dart-sdk/lib/async/zone.dart 1258:19                                              run
dart-sdk/lib/async/zone.dart 1162:7                                               runGuarded
dart-sdk/lib/async/zone.dart 1202:23                                              callback
dart-sdk/lib/async/schedule_microtask.dart 40:11                                  _microtaskLoop
dart-sdk/lib/async/schedule_microtask.dart 49:5                                   _startMicrotaskLoop
dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 166:15               <fn>

Also the HTML widget is fully interactive during drawing, (because the screenshot doesn't overlay the actual app,) which is strange.

At least wiredash should show an error when the screenshot couldn't created and hide the app

passsy avatar May 28 '21 11:05 passsy

This has been reported to the Flutter repository https://github.com/flutter/flutter/issues/101720

Nothing that can be resolved here

passsy avatar Jul 30 '22 23:07 passsy

Related to #118, but this is the web only issue

passsy avatar Jul 30 '22 23:07 passsy

The bug has been fixed by Flutter. Wiredash is still unable to get the pixel information about the HTML elements, but it doesn't crash anymore

passsy avatar Nov 29 '23 14:11 passsy