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:
constsukurti 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ą.