AssertionError if the condition evaluates to false. Assert initializers are strictly development-time checks; the Dart compiler completely removes them in production/release builds.
Syntax and Placement
Assert initializers are declared after the constructor’s colon (:) and before the constructor body. They are separated from other initializers (such as field assignments or super calls) by commas.
The syntax accepts a mandatory boolean condition and an optional string message:
Execution Lifecycle
- Argument Binding: Constructor arguments are evaluated and bound to parameters.
- Initializer List Execution: The initializer list executes from left to right. Assertions are evaluated in the order they appear.
- Superclass Constructor: The implicit or explicit superclass constructor is invoked.
- Constructor Body: The block body of the constructor executes.
this or access instance methods within the assert condition. You may only reference the constructor’s parameters, static members, or top-level variables.
Constant Constructors
Assert initializers are fully compatible withconst constructors. When a const constructor is invoked to create a compile-time constant, the assert initializer is evaluated by the compiler.
If the assertion fails during compile-time evaluation, it halts compilation and produces a compile-time error rather than a runtime AssertionError.
Redirection Constructors
When using a redirecting constructor, assert initializers can be placed before the redirection call. However, they cannot be combined with field initializations orsuper calls in this context.
Tired of Poor Dart Skills? Fix That With Deep Grasping!Learn More





