Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Craft better error message for OffsetLayer.toImage in the HTML renderer #49857

Open
domesticmouse opened this issue Jan 31, 2020 · 14 comments
Open
Labels
a: error message Error messages from the Flutter framework e: web_html HTML rendering backend for Web engine flutter/engine repository. See also e: labels. found in release: 3.19 Found to occur in 3.19 found in release: 3.20 Found to occur in 3.20 good first issue Relatively approachable for first-time contributors has reproducible steps The issue has been confirmed reproducible and is ready to work on P3 Issues that are less important to the Flutter project platform-web Web applications specifically team-web Owned by Web platform team triaged-web Triaged by Web platform team

Comments

@domesticmouse
Copy link
Contributor

I'm attempting to convert a Canvas widget's content to an image, using the following code. It works fine on iOS and macOS, but dies on the web.

  Future<void> _capturePng() async {
    RenderRepaintBoundary boundary =
        globalKey.currentContext.findRenderObject();
    ui.Image image = await boundary.toImage(pixelRatio: 1);
    ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
    Uint8List pngBytes = byteData.buffer.asUint8List();
    print('PNG Image size: ${pngBytes.length}');
  }

VSCode console output:


════════ Exception caught by scheduler library ═════════════════════════════════
The following assertion was thrown during a scheduler callback:
Assertion failed: org-dartlang-sdk:///flutter_web_sdk/lib/_engine/engine/surface/scene_builder.dart:267:12
retainedSurface.isActive || retainedSurface.isReleased
is not true

When the exception was thrown, this was the stack
throw_ (package:dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart:196:49)
assertFailed (package:dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart:26:3)
addRetained (package:build_web_compilers/lib/_engine/engine/surface/scene_builder.dart:267:55)
[_addToSceneWithRetainedRendering]
package:flutter/…/rendering/layer.dart:439
addChildrenToScene
package:flutter/…/rendering/layer.dart:1065
...
════════════════════════════════════════════════════════════════════════════════

JS Console stacktrace

errors.dart:147 Uncaught (in promise) Error: Exception: Incorrect sequence of push/pop operations while building scene surfaces. After building the scene the persisted surface stack must contain a single element which corresponds to the scene itself (_PersistedScene). All other surfaces should have been popped off the stack. Found the following surfaces in the stack:
PersistedScene, PersistedTransform
    at Object.throw_ [as throw] (errors.dart:196)
    at scene_builder.dart:24
    at _engine.SurfaceSceneBuilder.new.get [_persistedScene] (scene_builder.dart:31)
    at _engine.SurfaceSceneBuilder.new.build (scene_builder.dart:514)
    at layer$.OffsetLayer.new.buildScene (layer.dart:807)
    at layer$.OffsetLayer.new.toImage (layer.dart:1240)
    at toImage.next (<anonymous>)
    at runBody (async_patch.dart:86)
    at Object._async [as async] (async_patch.dart:125)
    at layer$.OffsetLayer.new.toImage (layer.dart:1229)
    at proxy_box.RenderRepaintBoundary.new.toImage (proxy_box.dart:2962)
    at main._MyHomePageState.new._capturePng (main.dart:35)
    at _capturePng.next (<anonymous>)
    at runBody (async_patch.dart:86)
    at Object._async [as async] (async_patch.dart:125)
    at main._MyHomePageState.new.[_capturePng] (main.dart:32)
    at _InkResponseState.new.[_handleTap] (ink_well.dart:705)
    at ink_well.dart:788
    at tap.TapGestureRecognizer.new.invokeCallback (recognizer.dart:182)
    at tap.TapGestureRecognizer.new.handleTapUp (tap.dart:486)
    at tap.TapGestureRecognizer.new.[_checkUp] (tap.dart:264)
    at tap.TapGestureRecognizer.new.handlePrimaryPointer (tap.dart:199)
    at tap.TapGestureRecognizer.new.handleEvent (recognizer.dart:470)
    at pointer_router.PointerRouter.new.[_dispatch] (pointer_router.dart:76)
    at pointer_router.dart:117
    at LinkedMap.new.forEach (linked_hash_map.dart:23)
    at pointer_router.PointerRouter.new.[_dispatchEventToRoutes] (pointer_router.dart:115)
    at pointer_router.PointerRouter.new.route (pointer_router.dart:101)
    at binding$5.WidgetsFlutterBinding.new.handleEvent (binding.dart:218)
    at binding$5.WidgetsFlutterBinding.new.dispatchEvent (binding.dart:198)
    at binding$5.WidgetsFlutterBinding.new.[_handlePointerEvent] (binding.dart:156)
    at binding$5.WidgetsFlutterBinding.new.[_flushPointerEventQueue] (binding.dart:102)
    at binding$5.WidgetsFlutterBinding.new.[_handlePointerDataPacket] (binding.dart:86)
    at _engine.PointerBinding.__.[_onPointerData] (pointer_binding.dart:129)
    at pointer_binding.dart:465
    at pointer_binding.dart:430
    at HTMLElement.<anonymous> (pointer_binding.dart:195)
@domesticmouse domesticmouse added the platform-web Web applications specifically label Jan 31, 2020
@yjbanov yjbanov added this to the Stretch Goals milestone Feb 6, 2020
@yjbanov yjbanov added the engine flutter/engine repository. See also e: labels. label Feb 6, 2020
@yjbanov
Copy link
Contributor

yjbanov commented Feb 13, 2020

OffsetLayer.toImage is not supported on the Web, but we should provide a much better error message.

@yjbanov yjbanov added the good first issue Relatively approachable for first-time contributors label Feb 13, 2020
@yjbanov
Copy link
Contributor

yjbanov commented Feb 13, 2020

@domesticmouse would you be interested in fixing the error message in a PR that tells developers that this is not currently supported?

@domesticmouse
Copy link
Contributor Author

I’m currently in I/O crunch, so I’m happy to look at this, but it’ll be a month or two before I have time.

@sh0umik
Copy link

sh0umik commented Feb 25, 2020

Is there any updates on this ? This feature would be much useful if it runs on web.

I am getting

Exception: Incorrect sequence of push/pop operations while building scene surfaces. After building the scene the persisted surface stack must contain a single element which corresponds to the scene itself (_PersistedScene). All other surfaces should have been popped off the stack. Found the following surfaces in the stack:
PersistedScene, PersistedTransform
══╡ EXCEPTION CAUGHT BY SCHEDULER LIBRARY ╞═════════════════════════════════════════════════════════
The following assertion was thrown during a scheduler callback:
Assertion failed:
org-dartlang-sdk:///flutter_web_sdk/lib/_engine/engine/surface/scene_builder.dart:267:12
retainedSurface.isActive || retainedSurface.isReleased
is not true

@kbry
Copy link

kbry commented Mar 20, 2020

is there any solution to screenshot a widget on the web

@LeonWehrhahn
Copy link

Also looking for a solution to take a screenshot of widgets on flutter web.

1 similar comment
@NickNevzorov
Copy link

Also looking for a solution to take a screenshot of widgets on flutter web.

@domesticmouse domesticmouse changed the title Attempting to screenshot a widget on the web throws stack trace Craft better error message for OffsetLayer.toImage is not supported on the Web Apr 27, 2020
@domesticmouse domesticmouse self-assigned this Apr 27, 2020
@maheshmnj
Copy link
Member

I think this might help you this flutter example from @rxlabz allows you to save your canvas as a png image live on the web here and you can find the source code here

@yjbanov yjbanov changed the title Craft better error message for OffsetLayer.toImage is not supported on the Web Craft better error message for OffsetLayer.toImage in the HTML renderer May 14, 2020
@yjbanov yjbanov added the e: web_html HTML rendering backend for Web label May 14, 2020
@kf6gpe kf6gpe added the P3 Issues that are less important to the Flutter project label May 29, 2020
@deakjahn
Copy link

@maheshmnj with the slight problem, unfortunately, that it isn't a ui.Canvas but a html.CanvasElement. A horse of a different color...

@deakjahn
Copy link

deakjahn commented Jul 6, 2020

@yjbanov Yegor, judging by the labels and commits, you might be the most active player in this area. :-)

I have identified and collected four errors (some actually fork into two being different problems on DomCanvas and CanvasKit) that, although separate errors, all belong to the same group of picture manipulation, this one being one of them. All of them are such showstoppers for me that I started to delve into the engine, trying to fix myself. (All of them are reported here, by the way.)

Just to recap:

  • Picture > Image doesn't work, this means that Canvas/Scene to Image isn't working, either. As noted above, Scene might be misleading to think that the priority is low because only people needing to take snapshots of widgets are affected but this isn't true. Canvas is the only way to do persistent picture manipulation (by persistent I mean not just for display but saved, exported, uploaded in any way). Fixing Picture > Image will cure them all at the same time.

  • Image.toByteData() doesn't work, actually two problems because neither DomCanvas nor CanvasKit works and these are two different problems. I'm still trying to tackle this.

  • instantiateImageCodec(width) doesn't work, although this could be worked around (with some pain) if the first item worked.

Is there any way to have a few messages about these (eg. I think Ifound what's actually missing for the first to work but I don't know if it would be ever included or replaced with another functionality on the web), maybe out of band? Just to see if these (or anything that lies behind these errors) are being worked on actively and if there's anything to be had by us trying to work on them, too.

@deakjahn
Copy link

deakjahn commented Jul 8, 2020

@yjbanov I fixed the first problem, Picture/Canvas toImage() already works for me. The required changes are rather simple, a few lines here and there. In CanvasKit, it seems just perfect, in DomCanvas I had to remove something that you might need in other scenarios (there is a comment to that effect). I'm actually only really interested in CanvasKit now but I wanted to take care of the other one, too.

I'll move on with the second problem but it would be nice to be able to show you the fix.

@darshankawar
Copy link
Member

darshankawar commented Dec 3, 2020

Verified and replicable on latest master and get below error message:

error log
Error: Assertion failed: org-dartlang-sdk:///flutter_web_sdk/lib/_engine/engine/html/scene_builder.dart:92:16
matrix4[0] == window.devicePixelRatio &&
           matrix4[5] == window.devicePixelRatio
is not true
    at Object.throw_ [as throw] (http://localhost:64329/dart_sdk.js:4351:11)
    at Object.assertFailed (http://localhost:64329/dart_sdk.js:4294:15)
    at _engine.SurfaceSceneBuilder.new.pushTransform (http://localhost:64329/dart_sdk.js:158855:133)
    at layer$.OffsetLayer.new.toImage (http://localhost:64329/packages/flutter/src/rendering/layer.dart.lib.js:1633:17)
    at toImage.next (<anonymous>)
    at runBody (http://localhost:64329/dart_sdk.js:37988:34)
    at Object._async [as async] (http://localhost:64329/dart_sdk.js:38019:7)
    at layer$.OffsetLayer.new.toImage (http://localhost:64329/packages/flutter/src/rendering/layer.dart.lib.js:1627:20)
    at proxy_box.RenderRepaintBoundary.new.toImage (http://localhost:64329/packages/flutter/src/rendering/proxy_box.dart.lib.js:3355:26)
    at main._PngHomeState.new._capturePng (http://localhost:64329/packages/webtest/main.dart.lib.js:286:37)
    at _capturePng.next (<anonymous>)
    at runBody (http://localhost:64329/dart_sdk.js:37988:34)
    at Object._async [as async] (http://localhost:64329/dart_sdk.js:38019:7)
    at main._PngHomeState.new.[_capturePng] (http://localhost:64329/packages/webtest/main.dart.lib.js:284:20)
    at ink_well._InkResponseState.new.[_handleTap] (http://localhost:64329/packages/flutter/src/material/icon_button.dart.lib.js:51063:42)
    at tap.TapGestureRecognizer.new.invokeCallback (http://localhost:64329/packages/flutter/src/gestures/recognizer.dart.lib.js:189:18)
    at tap.TapGestureRecognizer.new.handleTapUp (http://localhost:64329/packages/flutter/src/gestures/tap.dart.lib.js:395:40)
    at tap.TapGestureRecognizer.new.[_checkUp] (http://localhost:64329/packages/flutter/src/gestures/tap.dart.lib.js:201:12)
    at tap.TapGestureRecognizer.new.handlePrimaryPointer (http://localhost:64329/packages/flutter/src/gestures/tap.dart.lib.js:148:23)
    at tap.TapGestureRecognizer.new.handleEvent (http://localhost:64329/packages/flutter/src/gestures/recognizer.dart.lib.js:448:16)
    at pointer_router.PointerRouter.new.[_dispatch] (http://localhost:64329/packages/flutter/src/gestures/pointer_router.dart.lib.js:74:9)
    at http://localhost:64329/packages/flutter/src/gestures/pointer_router.dart.lib.js:109:26
    at LinkedMap.new.forEach (http://localhost:64329/dart_sdk.js:25093:11)
    at pointer_router.PointerRouter.new.[_dispatchEventToRoutes] (http://localhost:64329/packages/flutter/src/gestures/pointer_router.dart.lib.js:106:29)
    at pointer_router.PointerRouter.new.route (http://localhost:64329/packages/flutter/src/gestures/pointer_router.dart.lib.js:98:37)
    at binding$5.WidgetsFlutterBinding.new.handleEvent (http://localhost:64329/packages/flutter/src/gestures/binding.dart.lib.js:314:26)
    at binding$5.WidgetsFlutterBinding.new.dispatchEvent (http://localhost:64329/packages/flutter/src/gestures/binding.dart.lib.js:297:24)
    at binding$5.WidgetsFlutterBinding.new.dispatchEvent (http://localhost:64329/packages/flutter/src/rendering/layer.dart.lib.js:6093:13)
    at binding$5.WidgetsFlutterBinding.new.[_handlePointerEventImmediately] (http://localhost:64329/packages/flutter/src/gestures/binding.dart.lib.js:268:14)
    at binding$5.WidgetsFlutterBinding.new.handlePointerEvent (http://localhost:64329/packages/flutter/src/gestures/binding.dart.lib.js:241:43)
    at binding$5.WidgetsFlutterBinding.new.[_flushPointerEventQueue] (http://localhost:64329/packages/flutter/src/gestures/binding.dart.lib.js:230:14)
    at binding$5.WidgetsFlutterBinding.new.[_handlePointerDataPacket] (http://localhost:64329/packages/flutter/src/gestures/binding.dart.lib.js:220:65)
    at Object.invoke1 (http://localhost:64329/dart_sdk.js:178716:7)
    at _engine.EnginePlatformDispatcher.__.invokeOnPointerDataPacket (http://localhost:64329/dart_sdk.js:161367:15)
    at _engine.PointerBinding.__.[_onPointerData] (http://localhost:64329/dart_sdk.js:162002:49)
    at http://localhost:64329/dart_sdk.js:162435:26
    at http://localhost:64329/dart_sdk.js:162394:16
    at http://localhost:64329/dart_sdk.js:162102:11

flutter doctor -v
[✓] Flutter (Channel master, 1.25.0-5.0.pre.45, on Mac OS X 10.15.4 19E2269
    darwin-x64, locale en-IN)
    • Flutter version 1.25.0-5.0.pre.45 at
      /Users/dhs/documents/Fluttersdk/flutter
    • Framework revision 81e1f7d1ed (10 hours ago), 2020-12-02 17:19:57 -0800
    • Engine revision 20caf54969
    • Dart version 2.12.0 (build 2.12.0-76.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.0)
    • Android SDK at /Users/dhs/Library/Android/sdk
    • Platform android-30, build-tools 30.0.0
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.0.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.0.1, Build version 12A7300
    • CocoaPods version 1.9.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 46.0.2
    • Dart plugin version 193.7361
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.51.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.16.0

[✓] Connected device (5 available)
    • sdk gphone x86 arm (mobile)         • emulator-5554
      • android-x86    • Android 11 (API 30) (emulator)
    • iPhone SE (2nd generation) (mobile) • 6C85835D-FBFD-4AB3-8DE8-B4FAD35E5367
      • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-0 (simulator)
    • macOS (desktop)                     • macos
      • darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Web Server (web)                    • web-server
      • web-javascript • Flutter Tools
    • Chrome (web)                        • chrome
      • web-javascript • Google Chrome 87.0.4280.88

• No issues found!

@BytesZero
Copy link

BytesZero commented Jun 28, 2022

https://github.com/flutter/photobooth
I think this is a good example

image

@flutter-triage-bot flutter-triage-bot bot added multiteam-retriage-candidate team-web Owned by Web platform team triaged-web Triaged by Web platform team labels Jul 8, 2023
@danagbemava-nc
Copy link
Member

Reproducible on the latest versions of flutter.

code sample
import 'dart:typed_data';
import 'dart:ui' as ui;

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  GlobalKey globalKey = GlobalKey();

  void _incrementCounter() async {
      RenderRepaintBoundary boundary =
          globalKey.currentContext!.findRenderObject() as RenderRepaintBoundary;
      ui.Image image = await boundary.toImage(pixelRatio: 1);
      ByteData? byteData =
          await image.toByteData(format: ui.ImageByteFormat.png);
      Uint8List? pngBytes = byteData?.buffer.asUint8List();
      print('PNG Image size: ${pngBytes?.length}');
  }

  @override
  Widget build(BuildContext context) {
    return RepaintBoundary(
      key: globalKey,
      child: Scaffold(
        appBar: AppBar(
          backgroundColor: Theme.of(context).colorScheme.inversePrimary,
          title: Text(widget.title),
        ),
        body: const Center(
          child: Text('Some text'),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: _incrementCounter,
          tooltip: 'Increment',
          child: const Icon(Icons.add),
        ),
      ),
    );
  }
}
Error: Assertion failed: org-dartlang-sdk:///lib/_engine/engine/html/scene_builder.dart:94:16
matrix4[0] == EngineFlutterDisplay.instance.devicePixelRatio &&
            matrix4[5] == EngineFlutterDisplay.instance.devicePixelRatio
is not true
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3       throw_
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 29:3        assertFailed
lib/_engine/engine/html/scene_builder.dart 95:57                                  pushTransform
packages/flutter/src/rendering/layer.dart 1525:12                                 [_createSceneForImage]
packages/flutter/src/rendering/layer.dart 1549:28                                 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 127:5                _async
packages/flutter/src/rendering/layer.dart 1548:27                                 toImage
packages/flutter/src/rendering/proxy_box.dart 3357:23                             toImage
packages/xst/main.dart 42:38                                                      _incrementCounter
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 127:5                _async
packages/xst/main.dart 39:25                                                      [_incrementCounter]
packages/flutter/src/material/ink_well.dart 1171:21                               handleTap
packages/flutter/src/gestures/recognizer.dart 315:24                              invokeCallback
packages/flutter/src/gestures/tap.dart 652:11                                     handleTapUp
packages/flutter/src/gestures/tap.dart 309:5                                      [_checkUp]
packages/flutter/src/gestures/tap.dart 242:7                                      handlePrimaryPointer
packages/flutter/src/gestures/recognizer.dart 667:9                               handleEvent
packages/flutter/src/gestures/pointer_router.dart 98:7                            [_dispatch]
packages/flutter/src/gestures/pointer_router.dart 143:9                           <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart 21:7           forEach
packages/flutter/src/gestures/pointer_router.dart 141:17                          [_dispatchEventToRoutes]
packages/flutter/src/gestures/pointer_router.dart 127:7                           route
packages/flutter/src/gestures/binding.dart 495:5                                  handleEvent
packages/flutter/src/gestures/binding.dart 475:14                                 dispatchEvent
packages/flutter/src/rendering/binding.dart 425:11                                dispatchEvent
packages/flutter/src/gestures/binding.dart 420:7                                  [_handlePointerEventImmediately]
packages/flutter/src/gestures/binding.dart 383:5                                  handlePointerEvent
packages/flutter/src/gestures/binding.dart 330:7                                  [_flushPointerEventQueue]
packages/flutter/src/gestures/binding.dart 299:9                                  [_handlePointerDataPacket]
lib/_engine/engine/platform_dispatcher.dart 1418:5                                invoke1
lib/_engine/engine/platform_dispatcher.dart 332:5                                 invokeOnPointerDataPacket
lib/_engine/engine/pointer_binding.dart 398:30                                    [_sendToFramework]
lib/_engine/engine/pointer_binding.dart 224:7                                     onPointerData
lib/_engine/engine/pointer_binding.dart 1001:20                                   <fn>
lib/_engine/engine/pointer_binding.dart 930:7                                     <fn>
lib/_engine/engine/pointer_binding.dart 531:9                                     loggedHandler
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 426:37  _checkAndCall
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 431:39  dcall
flutter doctor -v
[✓] Flutter (Channel stable, 3.19.2, on macOS 14.3.1 23D60 darwin-arm64, locale en-GB)
    • Flutter version 3.19.2 on channel stable at /Users/nexus/dev/sdks/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 7482962148 (7 days ago), 2024-02-27 16:51:22 -0500
    • Engine revision 04817c99c9
    • Dart version 3.3.0
    • DevTools version 2.31.1

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • Java binary at: /Users/nexus/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.2)
    • Xcode at /Applications/Xcode-15.2.0.app/Contents/Developer
    • Build 15C500b
    • CocoaPods version 1.14.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2023.1)
    • Android Studio at /Users/nexus/Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.5)
    • IntelliJ at /Users/nexus/Applications/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 77.2.2
    • Dart plugin version 232.10286

[✓] VS Code (version 1.86.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.84.0

[✓] Connected device (5 available)
    • Pixel 7 (mobile)     • 28291FDH2001SA            • android-arm64  • Android 14 (API 34)
    • Nexus (mobile)       • 00008020-001875E83A38002E • ios            • iOS 17.3.1 21D61
    • Dean’s iPad (mobile) • 00008103-000825C811E3401E • ios            • iOS 17.3.1 21D61
    • macOS (desktop)      • macos                     • darwin-arm64   • macOS 14.3.1 23D60 darwin-arm64
    • Chrome (web)         • chrome                    • web-javascript • Google Chrome 122.0.6261.94

[✓] Network resources
    • All expected network resources are available.

• No issues found!
[!] Flutter (Channel master, 3.20.0-17.0.pre.77, on macOS 14.3.1 23D60 darwin-arm64, locale en-GB)
    • Flutter version 3.20.0-17.0.pre.77 on channel master at /Users/nexus/dev/sdks/flutters
    ! Warning: `flutter` on your path resolves to /Users/nexus/dev/sdks/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutters. Consider adding /Users/nexus/dev/sdks/flutters/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/nexus/dev/sdks/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutters. Consider adding /Users/nexus/dev/sdks/flutters/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision e73e7e2e56 (9 hours ago), 2024-03-04 19:01:40 -0800
    • Engine revision d514a302cd
    • Dart version 3.4.0 (build 3.4.0-190.0.dev)
    • DevTools version 2.33.1
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /Users/nexus/Library/Android/sdk
    • Platform android-34, build-tools 34.0.0
    • Java binary at: /Users/nexus/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 15.2)
    • Xcode at /Applications/Xcode-15.2.0.app/Contents/Developer
    • Build 15C500b
    • CocoaPods version 1.14.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2023.1)
    • Android Studio at /Users/nexus/Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 17.0.7+0-17.0.7b1000.6-10550314)

[✓] IntelliJ IDEA Ultimate Edition (version 2023.2.5)
    • IntelliJ at /Users/nexus/Applications/IntelliJ IDEA Ultimate.app
    • Flutter plugin version 77.2.2
    • Dart plugin version 232.10286

[✓] VS Code (version 1.86.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.84.0

[✓] Connected device (6 available)
    • Pixel 7 (mobile)                • 28291FDH2001SA            • android-arm64  • Android 14 (API 34)
    • Nexus (mobile)                  • 00008020-001875E83A38002E • ios            • iOS 17.3.1 21D61
    • Dean’s iPad (mobile)            • 00008103-000825C811E3401E • ios            • iOS 17.3.1 21D61
    • macOS (desktop)                 • macos                     • darwin-arm64   • macOS 14.3.1 23D60 darwin-arm64
    • Mac Designed for iPad (desktop) • mac-designed-for-ipad     • darwin         • macOS 14.3.1 23D60 darwin-arm64
    • Chrome (web)                    • chrome                    • web-javascript • Google Chrome 122.0.6261.94

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 1 category.

@danagbemava-nc danagbemava-nc added found in release: 3.19 Found to occur in 3.19 found in release: 3.20 Found to occur in 3.20 and removed found in release: 1.25 Found to occur in 1.25 multiteam-retriage-candidate labels Mar 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
a: error message Error messages from the Flutter framework e: web_html HTML rendering backend for Web engine flutter/engine repository. See also e: labels. found in release: 3.19 Found to occur in 3.19 found in release: 3.20 Found to occur in 3.20 good first issue Relatively approachable for first-time contributors has reproducible steps The issue has been confirmed reproducible and is ready to work on P3 Issues that are less important to the Flutter project platform-web Web applications specifically team-web Owned by Web platform team triaged-web Triaged by Web platform team
Projects
None yet
Development

No branches or pull requests