Skip to main content
A pragma is a built-in Dart annotation used to provide specific directives, hints, or metadata to the underlying Dart compiler, virtual machine (VM), or static analysis tools. It acts as a mechanism to pass tool-specific instructions that are outside the standard Dart language semantics, allowing developers to influence compilation, optimization, or execution behavior.

Syntax

The @pragma annotation is instantiated with a required string identifier and an optional constant argument.

Anatomy of a Pragma

  • name (String): A compile-time constant string that identifies the directive. By convention, the name is namespaced using a prefix that denotes the target tool, followed by a colon and the specific instruction (e.g., 'vm:prefer-inline', 'dart2js:noInline').
  • options (Object?): An optional, compile-time constant value that supplies additional parameters or configuration to the tool processing the pragma. If omitted, it defaults to null.

Mechanics and Resolution

  1. Target Agnosticism: Pragmas are designed to be safely ignored by tools that do not understand them. If the Dart VM encounters a dart2js: pragma, or if the analyzer encounters an unrecognized vm: pragma, the tool will bypass the annotation without emitting compilation errors or warnings.
  2. Compile-Time Evaluation: Both the name and the options arguments must be strictly evaluated as compile-time constants.
  3. Application Targets: The @pragma annotation can be attached to almost any Dart declaration, including libraries, classes, mixins, functions, methods, and variables.

Syntax Visualization

Tired of Poor Dart Skills? Fix That With Deep Grasping!Learn More