The code sample
tool generates a block containing a description and example code. Here is an example of the code sample
tool in use:
/// {@tool sample} /// /// If the avatar is to have an image, the image should be specified in the /// [backgroundImage] property: /// /// ```dart /// CircleAvatar( /// backgroundImage: NetworkImage(userAvatarUrl), /// ) /// ``` /// {@end-tool}
This will generate sample code that can be copied to the clipboard and added to existing applications.
This uses the skeleton for sample snippets.
The code snippet
tool can expand sample code into full Flutter applications. These sample applications can be directly copied and used to demonstrate the API's functionality in a sample application:
/// {@tool snippet --template=stateless_widget_material} /// This example shows how to make a simple [FloatingActionButton] in a /// [Scaffold], with a pink [backgroundColor] and a thumbs up [Icon]. /// /// ```dart /// Widget build(BuildContext context) { /// return Scaffold( /// appBar: AppBar( /// title: Text('Floating Action Button Sample'), /// ), /// body: Center( /// child: Text('Press the button below!') /// ), /// floatingActionButton: FloatingActionButton( /// onPressed: () { /// // Add your onPressed code here! /// }, /// child: Icon(Icons.thumb_up), /// backgroundColor: Colors.pink, /// ), /// ); /// } /// ``` /// {@end-tool}
This uses the skeleton for application snippets.
Code snippets
also allow for quick Flutter app generation using the following command:
flutter create --sample=[directory.File.sampleNumber] [name_of_project_directory]
In order to support showing an entire app when you click on the right tab of the code snippet UI, we have to be able to insert the snippet
into the template and instantiate the right parts.
To do this, there is a config/templates directory that contains a list of templates. These templates represent an entire app that the snippet
can be placed into, basically a replacement for lib/main.dart
in a flutter app package.
For more information about how to create, use, or update templates, see config/templates/README.md.
A skeleton (in relation to this tool) is an HTML template into which the Dart code blocks and descriptions are interpolated.
There is currently one skeleton for application snippets
and one for sample snippets
, but there could be more.
Skeletons use mustache notation (e.g. {{code}}
) to mark where components will be interpolated into the template. It doesn't actually use the mustache package, since these are simple string substitutions, but it uses the same syntax.
The code block generation tools process the source input and emit HTML for output, which dartdoc places back into the documentation. Any options given to the {@tool ...}
directive are passed on verbatim to the tool.
The snippets
tool renders these examples through a combination of markdown and HTML using the {@inject-html}
dartdoc directive.
If you are making changes to an existing code block or are creating a new code block, follow these steps to generate a local copy of the API docs and verify that your code blocks are showing up correctly:
./dev/bots/docs.sh
. This should start generating a local copy of the API documentation../dev/docs/doc
to check your API documentation. The search bar will not work locally, so open ./dev/docs/doc/index.html
to navigate through the documentation, or search ./dev/docs/doc/flutter
for your page of interest.