Skip to content

Open embedded DevTools Inspector to error-causing widget for Flutter render overflow errors #3088

@kenzieschmoll

Description

@kenzieschmoll

As of flutter/flutter#74251, deep links to the inspector are printed in error messages for render overflow errors. The structured error for this will contain a diagnostics node of type DevToolsDeepLinkProperty (the diagnostics node naming is in progress flutter/flutter#74455). Right now the diagnostics node looks like:

{
	"description": "To inspect this widget in Flutter DevTools, visit: http://127.0.0.1:9100/#/inspector?uri=http%3A%2F%2F127.0.0.1%3A53813%2FiJkJsuFOUyY%3D%2F&inspectorRef=inspector-0",
	"type": "DiagnosticsProperty<void>",
	"name": "",
	"showName": false,
	"style": "singleLine",
	"allowNameWrap": true,
	"objectId": "inspector-12",
	"valueId": null,
	"properties": [],
	"children": [],
	"missingIfNull": false,
	"propertyType": "void",
	"defaultLevel": "info",
	"value": null
},

VS code should

  1. upon receiving an error like this, show a prompt that warns the user that something went wrong and gives them a button to inspect the error-causing widget in the embedded DevTools inspector.
  2. take over the rendering of this diagnostics node in the console. We don't want a link in the console that will take the user to the chrome version of DevTools at the same time that we show a prompt that will take the user to the embedded version of DevTools.
  3. Generally, show the link in the console as is if the user is not opted into embedded DevTools, and do not show the link in the console if we are using the prompt

We need an MVP of this by end of next week, if possible (for demo recording purposes). Ideally to be included in the release next week.

Partner issue in the flutter-intellij plugin: flutter/flutter-intellij#5198

Some edge cases we should complete as follow ups:

  • What if there are multiple errors at once? Do we collapse the notifications? Always show the last?
  • Provide users with an option "Don't show me messages like these" or similar. If the user does this, we should revert back to displaying the deep link in the console.

Metadata

Metadata

Assignees

Labels

in commandsRelates to commands (usually invoked from the command Palette)in flutterRelates to running Flutter appsis enhancement

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions