SachinGanesh / screenshot

Flutter Screenshot Library
https://pub.dev/packages/screenshot
MIT License
343 stars 141 forks source link

Doesn't work in Chrome #122

Open gramster opened 1 year ago

gramster commented 1 year ago

Is it supposed to? That's not clear from the docs. I have this working as expected on iOS, but running in Chrome on MacOS I get an exception.

Code:

    screenshotController
        .captureFromWidget(
            Container(
                padding: const EdgeInsets.all(5.0),
                decoration: BoxDecoration(
                  border: Border.all(color: Colors.black, width: 2.0),                ),
                child: Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                      Center(child: Text(_title)),
                      Center(
                          child: makeGridWidget(
                              forSharing: true)),
                    ])),
            delay: const Duration(milliseconds: 500))
        .then((capturedImage) {
            ...

makeGridWidget returns a GridView where each child is one of these:

SizedBox(
          width: 50,
          height: 50,
          child: DecoratedBox(
            decoration: BoxDecoration(color: color, border: border),
            child: Center(
                child: Text(txt,
                    textAlign: TextAlign.center,
                    style: const TextStyle(color: Colors.black))),
          ),
        ))

Result:

Launching lib/main.dart on Chrome in debug mode...
This app is linked to the debug service: ws://127.0.0.1:58376/ducuHAKejXk=/ws
Debug service listening on ws://127.0.0.1:58376/ducuHAKejXk=/ws
💪 Running with sound null safety 💪
Connecting to VM Service at ws://127.0.0.1:58376/ducuHAKejXk=/ws
Flutter Web Bootstrap: Programmatic
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following assertion was thrown building RawScrollbar(dirty, dependencies: [Directionality],
state: RawScrollbarState<RawScrollbar>#05aaa(tickers: tracking 1 ticker)):
No MediaQuery widget ancestor found.
RawScrollbar widgets require a MediaQuery widget ancestor.
The specific widget that could not find a MediaQuery ancestor was:
  RawScrollbar
The ownership chain for the affected widget is: "RawScrollbar ← Scrollable ← GridView ← Center ←
  Column ← Padding ← DecoratedBox ← Container ← Directionality ←
  RenderObjectToWidgetAdapter<RenderBox>-[GlobalObjectKey RenderRepaintBoundary#5b526]"
No MediaQuery ancestor could be found starting from the context that was passed to MediaQuery.of().
This can happen because you have not added a WidgetsApp, CupertinoApp, or MaterialApp widget (those
widgets introduce a MediaQuery), or it can happen if the context you use comes from a widget above
those widgets.
The relevant error-causing widget was:
GridView
When the exception was thrown, this was the stack:
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49  throw_
packages/flutter/src/widgets/debug.dart 246:7                                 <fn>
packages/flutter/src/widgets/debug.dart 260:12                                debugCheckHasMediaQuery
packages/flutter/src/widgets/media_query.dart 908:12                          of
packages/flutter/src/widgets/scrollbar.dart 1551:42                           <fn>
packages/flutter/src/widgets/scrollbar.dart 1558:26                           updateScrollbarPainter
packages/flutter/src/widgets/scrollbar.dart 1953:5                            build
packages/flutter/src/widgets/framework.dart 4919:27                           build
packages/flutter/src/widgets/framework.dart 4806:15                           performRebuild
packages/flutter/src/widgets/framework.dart 4977:11                           performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                            rebuild
packages/flutter/src/widgets/framework.dart 4787:5                            [_firstBuild]
packages/flutter/src/widgets/framework.dart 4968:11                           [_firstBuild]
packages/flutter/src/widgets/framework.dart 4781:5                            mount
packages/flutter/src/widgets/framework.dart 3817:15                           inflateWidget
packages/flutter/src/widgets/framework.dart 3551:18                           updateChild
packages/flutter/src/widgets/framework.dart 4832:16                           performRebuild
packages/flutter/src/widgets/framework.dart 4977:11                           performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                            rebuild
packages/flutter/src/widgets/framework.dart 4787:5                            [_firstBuild]
packages/flutter/src/widgets/framework.dart 4968:11                           [_firstBuild]
packages/flutter/src/widgets/framework.dart 4781:5                            mount
packages/flutter/src/widgets/framework.dart 3817:15                           inflateWidget
packages/flutter/src/widgets/framework.dart 3551:18                           updateChild
packages/flutter/src/widgets/framework.dart 4832:16                           performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                            rebuild
packages/flutter/src/widgets/framework.dart 4787:5                            [_firstBuild]
packages/flutter/src/widgets/framework.dart 4781:5                            mount
packages/flutter/src/widgets/framework.dart 3817:15                           inflateWidget
packages/flutter/src/widgets/framework.dart 3551:18                           updateChild
packages/flutter/src/widgets/framework.dart 6215:14                           mount
packages/flutter/src/widgets/framework.dart 3817:15                           inflateWidget
packages/flutter/src/widgets/framework.dart 6350:36                           inflateWidget
packages/flutter/src/widgets/framework.dart 6362:32                           mount
packages/flutter/src/widgets/framework.dart 3817:15                           inflateWidget
packages/flutter/src/widgets/framework.dart 3551:18                           updateChild
packages/flutter/src/widgets/framework.dart 6215:14                           mount
packages/flutter/src/widgets/framework.dart 3817:15                           inflateWidget
packages/flutter/src/widgets/framework.dart 3551:18                           updateChild
packages/flutter/src/widgets/framework.dart 6215:14                           mount
packages/flutter/src/widgets/framework.dart 3817:15                           inflateWidget
packages/flutter/src/widgets/framework.dart 3551:18                           updateChild
packages/flutter/src/widgets/framework.dart 4832:16                           performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                            rebuild
packages/flutter/src/widgets/framework.dart 4787:5                            [_firstBuild]
packages/flutter/src/widgets/framework.dart 4781:5                            mount
packages/flutter/src/widgets/framework.dart 3817:15                           inflateWidget
packages/flutter/src/widgets/framework.dart 3551:18                           updateChild
packages/flutter/src/widgets/framework.dart 4832:16                           performRebuild
packages/flutter/src/widgets/framework.dart 4529:5                            rebuild
packages/flutter/src/widgets/framework.dart 4787:5                            [_firstBuild]
packages/flutter/src/widgets/framework.dart 4781:5                            mount
packages/flutter/src/widgets/framework.dart 3817:15                           inflateWidget
packages/flutter/src/widgets/framework.dart 3551:18                           updateChild
packages/flutter/src/widgets/binding.dart 1202:16                             [_rebuild]
packages/flutter/src/widgets/binding.dart 1171:5                              mount
packages/flutter/src/widgets/binding.dart 1119:16                             <fn>
packages/flutter/src/widgets/framework.dart 2597:19                           buildScope
packages/flutter/src/widgets/binding.dart 1118:12                             attachToRenderTree
packages/screenshot/screenshot.dart 187:27                                    widgetToUiImage
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/screenshot/screenshot.dart 118:42                                    widgetToUiImage
packages/screenshot/screenshot.dart 106:28                                    captureFromWidget
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/screenshot/screenshot.dart 99:38                                     captureFromWidget
packages/griddle/main.dart 549:10                                             sharePuzzle
packages/griddle/main.dart 594:35                                             <fn>
packages/flutter/src/material/ink_well.dart 1005:21                           [_handleTap]
packages/flutter/src/gestures/recognizer.dart 198:24                          invokeCallback
packages/flutter/src/gestures/tap.dart 613:48                                 handleTapUp
packages/flutter/src/gestures/tap.dart 298:5                                  [_checkUp]
packages/flutter/src/gestures/tap.dart 232:7                                  handlePrimaryPointer
packages/flutter/src/gestures/recognizer.dart 563:9                           handleEvent
packages/flutter/src/gestures/pointer_router.dart 94:12                       [_dispatch]
packages/flutter/src/gestures/pointer_router.dart 139:9                       <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart 21:13      forEach
packages/flutter/src/gestures/pointer_router.dart 137:17                      [_dispatchEventToRoutes]
packages/flutter/src/gestures/pointer_router.dart 123:7                       route
packages/flutter/src/gestures/binding.dart 445:19                             handleEvent
packages/flutter/src/gestures/binding.dart 425:14                             dispatchEvent
packages/flutter/src/rendering/binding.dart 329:11                            dispatchEvent
packages/flutter/src/gestures/binding.dart 380:7                              [_handlePointerEventImmediately]
packages/flutter/src/gestures/binding.dart 344:5                              handlePointerEvent
packages/flutter/src/gestures/binding.dart 302:7                              [_flushPointerEventQueue]
packages/flutter/src/gestures/binding.dart 285:32                             [_handlePointerDataPacket]
lib/_engine/engine/platform_dispatcher.dart 1105:13                           invoke1
lib/_engine/engine/platform_dispatcher.dart 185:5                             invokeOnPointerDataPacket
lib/_engine/engine/pointer_binding.dart 130:39                                [_onPointerData]
lib/_engine/engine/pointer_binding.dart 543:18                                <fn>
lib/_engine/engine/pointer_binding.dart 496:21                                <fn>
lib/_engine/engine/pointer_binding.dart 210:16                                loggedHandler
════════════════════════════════════════════════════════════════════════════════════════════════════
Kamihimmel commented 1 year ago

same here background image does not shown in chrome but safari works fine