2a83a78213
The Flutter Widget Preview feature is currently implemented within Flutter Tools, which is responsible for detecting widget preview annotations in the user's project. When previews are detected, the Flutter Tool injects code generated based on the detected previews into an artificial widget_preview_scaffold project and performs a hot reload to render updates to the preview set in the scaffold application. `package:analyzer` is currently being used to detect previews, but this comes with a significant amount of memory overhead. Since widget previews are mostly being used from within IDEs which already have an active analysis server, moving widget preview detection into the DAS will remove the need for creating an additional analysis context in the Flutter Tool itself. This change includes the initial work to move widget preview detection into the DAS. It utilizes a pull-based mechanism, where the Flutter Tool listens for file system events and then queries the DAS using the `dart/textDocument/getFlutterWidgetPreviews` and `dart/workspace/getFlutterWidgetPreviews` LSP methods. Each reported preview contains some generated code based on the annotation used to define the preview. This code has all constants from the original annotation evaluated to either primitive values or constant expressions with namespaces applied to each symbol, allowing for the Flutter Tool to inject this code directly when updating the generated code in the scaffold project. Towards https://github.com/flutter/flutter/issues/179584 Change-Id: I043cb3235a66b25dda3f852ca7f147bff0e1e537 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/478100 Auto-Submit: Ben Konyi <bkonyi@google.com> Commit-Queue: Ben Konyi <bkonyi@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
analysis_server
A long-running process that provides analysis results to other tools.
The analysis server is designed to provide on-going analysis of one or more code bases as those code bases are changing.
Using the server
The analysis server is not intended to be used stand-alone, and therefore does not have a human-friendly user interface.
Clients (typically tools, such as an editor) are expected to run the analysis
server in a separate process and communicate with it using a JSON protocol. The
original protocol is specified in the file analysis_server/doc/api.html
and Language Server Protocol support is documented in
tool/lsp_spec/README.md.
Features and bugs
Please file feature requests and bugs at the issue tracker.