blob: 7a2326f299f0bb66a6b568990cbf26f7ba63da9f [file] [view] [edit]
# DartPad
`package:dartpad` is a library for building web applications that enable users
to prototype Dart and Flutter in the browser.
This package provides the functionality for running a Dart or Flutter
development environment in the browser. By enabling you launch and communicate
with:
* A **worker**, a dart2wasm compiled _Web Worker_ featuring:
* An in-memory file system,
* The Dart LSP server,
* The Dart Development Compiler (DDC),
* A subset of `dart pub` commands for dependency resolution.
* A **Sandbox**, an isolated `iframe` containing bootstrap code necessary to:
* Run, hot-reload and hot-restart DDC compiled Dart code, and,
* Proxy console output and _unhandled exceptions_ out of the iframe.
To build a custom dartpad-like experience, you simply have to launch the worker,
connect the _language server_ to your editor, compile code and tell the sandbox
to run said code, while presenting console output to the user.
## Limitations
As of writing there are no support for:
* Build hooks,
* Flutter plugins,
* Flutter assets,
* Code generation with `build_runner`.
It might be possible to support some of these features in the future.