Sobes.tech
Middle

Povězte mi o konstantních konstruktorech ve Flutteru.

sobes.tech AI

Odpověď od AI

Konstantní konstruktor umožňuje vytvořit objekt, který může překladač vypočítat během kompilace a znovu jej použít. To zvyšuje výkon a snižuje spotřebu paměti.

Klíčové vlastnosti:

  • Označeno klíčovým slovem const.
  • Všechna pole třídy definovaná tímto konstruktorem musí být final.
  • Všechna argumenty konstruktoru musí být také konstantní nebo mít výchozí konstantní hodnoty.
  • Při vytváření instance s tímto konstruktorem se používá klíčové slovo const.

Příklad:

class Point {
  final double x;
  final double y;

  const Point(this.x, this.y); // Konstantní konstruktor
}

void main() {
  // Tyto dva objekty budou reprezentovat stejnou instanci v paměti
  const p1 = Point(1.0, 2.0);
  const p2 = Point(1.0, 2.0);

  // Tento objekt bude novou instancí
  final p3 = Point(1.0, 2.0);

  print(identical(p1, p2)); // Vytiskne: true
  print(identical(p1, p3)); // Vytiskne: false
}

Výhody používání const konstruktorů:

  • Výkon: Objekty jsou vytvářeny pouze jednou a znovu použity.
  • Snížení spotřeby paměti: Počet vytvářených objektů se snižuje.
  • Neměnnost: Objekty vytvořené s const jsou neměnitelné.

Omezení:

  • Třída nesmí mít tovární konstruktor (factory).
  • Třída nesmí obsahovat měnitelné pole.

Konstantní konstruktor se často používá k vytváření neměnných widgetů ve Flutteru, jako jsou Text, Icon, Padding, SizedBox, což je dobrá praxe pro optimalizaci výkonu uživatelského rozhraní.