Const Constructors

Const Constructors

About

  • Const constructors create compile-time constants.
  • Produce canonicalized instances.
  • Require immutable objects.
  • Enable performance optimizations.

Main Topics

  1. Basic Const Constructor

    • **Definition: const` keyword.
    • Example:
      class Point {
        final int x, y;
        const Point(this.x, this.y);
      }
  2. Canonicalization

    • **Definition`: Single instance per values.
    • Example:
      const p1 = Point(1,2);
      const p2 = Point(1,2);
      print(identical(p1, p2)); // true
  3. Immutable Requirements

    • **Definition: All fields must be final`.
    • Example:
      class Circle {
        final double radius;
        const Circle(this.radius);
      }
  4. Performance Benefits

    • **Definition`: Compile-time evaluation.
    • Example:
      const defaultPoint = Point(0,0); // No runtime cost

How to Use

  • **Declare: Mark constructor const`
  • **Instantiate: Use const` keyword
  • **Fields`: Must be final
  • **Parameters`: Only constant expressions

How It Works

  • **Compile-time`: Evaluated during compilation
  • **Canonical`: Single instance per unique values
  • **Immutable`: State cannot change

Example Session:

void main() {
  const origin = Point(0,0); // Compile-time constant
  const sameOrigin = Point(0,0); // Same instance
}

Conclusion

Const constructors enable true compile-time constants in Dart, providing memory efficiency and performance benefits for immutable value objects throughout application code.