Sobes.tech
Middle

Papaskinkite apie nekintamus konstruktorius Flutter.

sobes.tech AI

Atsakymas iš AI

Pastovus konstruktorius leidžia sukurti objektą, kurį kompiliatorius gali apskaičiuoti kompiliacijos metu ir naudoti pakartotinai. Tai pagerina našumą ir sumažina atminties suvartojimą.

Pagrindinės savybės:

  • Pažymėta raktažodžiu const.
  • Visos klasės laukai, apibrėžti šiuo konstruktoriu, turi būti final.
  • Visi konstruktoriaus argumentai taip pat turi būti pastovūs arba turėti numatytas pastovias reikšmes.
  • Kurdamas egzempliorių su šiuo konstruktoriu, naudojamas žodis const.

Pavyzdys:

class Point {
  final double x;
  final double y;

  const Point(this.x, this.y); // Pastovus konstruktorius
}

void main() {
  // Šie du objektai atstovaus tą pačią egzempliorių atmintyje
  const p1 = Point(1.0, 2.0);
  const p2 = Point(1.0, 2.0);

  // Šis objektas bus nauja egzempliorius
  final p3 = Point(1.0, 2.0);

  print(identical(p1, p2)); // Išves: true
  print(identical(p1, p3)); // Išves: false
}

const konstruktorių naudojimo privalumai:

  • Našumas: Objektai sukuriami tik kartą ir naudojami pakartotinai.
  • Atminties taupymas: Sumažėja sukurtų objektų skaičius.
  • Nepakeičiamumas: const sukurti objektai yra nepakeičiami.

Apribojimai:

  • Klasė neturi turėti fabrikos konstruktoriaus (factory).
  • Klasė negali turėti keičiamų laukų.

Pastovūs konstruktoriai dažnai naudojami kuriant nepakeičiamus widget'us Flutter, tokius kaip Text, Icon, Padding, SizedBox, ir tai yra gera praktika optimizuojant vartotojo sąsajos našumą.