Middle
Kaip Flutter naudojami nekintami objektai?
sobes.tech AI
Atsakymas iš AI
„Flutter“ imutabilūs objektai (pavyzdžiui, widgetai) vaidina pagrindinį vaidmenį UI perpiešimo mechanizme.
Pagrindiniai aspektai:
- Efektyvus perpiešimas: Flutter gali efektyviai palyginti widgetus medyje, nes jų savybės nesikeičia po sukūrimo. Jei tėvo widgeto savybės nepasikeitė, jo vaikai, kurie yra imutabilūs widgetai, taip pat nereikalauja perpiešimo, tai optimizuoja našumą.
- Numatomas elgesys: Kadangi widgeto savybės yra nekintančios, jo būsena visada aiškiai apibrėžiama sukūrimo metu. Tai palengvina derinimą ir duomenų srauto supratimą programoje.
- Srauto saugumas: Kadangi imutabilūs objektai negali būti keičiami, jie yra inherently saugūs srautui. Tai svarbu asinchroninėje aplinkoje, kur keli srautai gali sąveikauti su duomenimis.
- Naujos būsenos sukūrimas: Kai duomenys keičiasi, vietoje esamo objekto mutavimo, sukuriamas naujas widgetas arba būsenos objektas su atnaujintomis savybėmis.
Pavyzdys, kaip sukurti imutabilų StatelessWidget:
import 'package:flutter/material.dart';
class ImmutableWidget extends StatelessWidget {
final String text; // Galutinis laukas - padaro jį imutabiliu po sukūrimo
const ImmutableWidget({Key? key, required this.text}) : super(key: key);
@override
Widget build(BuildContext context) {
return Text(text);
}
}
StatefulWidget viduje pats widgetas yra imutabilus, tačiau jo susijęs objektas State yra mutabilus ir saugo keičiamą būseną. Kai būseną keičia, kviečiama setState(), kuri informuoja framework'ą apie reikalingą perpiešimą. Sukuriamas naujas widgetas su atnaujintomis savybėmis, tačiau senasis widgetas lyginamas su nauju, kad būtų nustatyti minimalūs pokyčiai medyje.