Middle
Чӣ гуна объектҳои ғайриқобили тағирёбӣ дар Flutter истифода мешаванд?
sobes.tech AI
Ҷавоб аз AI
Дар Flutter, объектҳои ғайриҳаракатӣ (масалан, widget-ҳо) нақши марказиро дар механизми дубора ранг кардани интерфейси корбарӣ мебозанд.
Масъалаҳои калидӣ дар истифода:
- Самаранокии дубора ранг кардан: Flutter метавонад widget-ҳоро дар дарахти унсурҳо самаранок муқоиса кунад, зеро хосиятҳои онҳо пас аз эҷод кардан тағир намеёбанд. Агар хосиятҳои widget-ро падар тағир надиҳад, фарзандони он, ки widget-ҳои ғайриҳаракатӣ мебошанд, низ эҳтиёҷ ба дубора ранг кардан надоранд, ки ин ба иҷроиш беҳбудӣ мебахшад.
- Пешгӯӣ: Аз сабаби ғайриҳаракатии хосиятҳои widget, ҳолати он ҳамеша равшан дар вақти эҷод муайян карда мешавад. Ин ба осонӣ хатоҳои ошкор кардан ва фаҳмидани ҷараёни маълумот дар барнома кӯмак мекунад.
- Бехатарии ҷараён: Аз сабаби он, ки объектҳои ғайриҳаракатӣ тағирнопазир мебошанд, онҳо дар асоси табиӣ бехатар барои ҷараён мебошанд. Ин дар муҳитҳои асинхронӣ муҳим аст, ки дар он чандирҳои зиёд бо маълумот муошират мекунанд.
- Эҷоди ҳолати нав: Вақте маълумот тағир меёбад, ба ҷои тағир додани объекти мавҷуда, нусхаи нав аз widget ё объекти ҳолат бо хосиятҳои навсозишуда эҷод мешавад.
Масалан барои эҷоди widget ғайриҳаракатӣ StatelessWidget:
import 'package:flutter/material.dart';
class ImmutableWidget extends StatelessWidget {
final String text; // Майдони ниҳоӣ - онро пас аз эҷод ғайриҳаракатӣ мекунад
const ImmutableWidget({Key? key, required this.text}) : super(key: key);
@override
Widget build(BuildContext context) {
return Text(text);
}
}
Дар StatefulWidget, худи widget ғайриҳаракатӣ аст, аммо объекти пайвасташудаи он State тағирёбанда аст ва ҳолати тағирёбандаро нигоҳ медорад. Вақте ҳолат дар State тағир меёбад, setState() даъват мешавад, ки ба рамзсозӣ хабар медиҳад, ки зарур аст, ки widget-ҳоро бо ҳолати нав барқарор кунад. Нусхаи нав аз widget бо хосиятҳои навсозишуда эҷод мешавад, вале widget-и кӯҳнаро бо нав муқоиса мекунанд, то тағиротҳои минималӣ дар дарахти унсурҳоро муайян кунанд.