Middle
Ի՞նչ է Stateful widget-ի կյանքի ցիկլը Flutter-ում։
sobes.tech AI
Պատասխան AI-ից
createState(): Ստեղծում էStateօբյեկտwidget-ի համար:initState(): Կարգավորում է վիճակը, բաժանորդագրվում է stream-երին, անիմացիաներին: Կատարվում է մեկ անգամ՝ widget-ի ստեղծման ժամանակ:didChangeDependencies(): Կատարվում էinitState()-ից հետո և կախվածությունների փոփոխության ժամանակ (օրինակ՝ InheritedWidget):build(): Օգտագործողի ինտերֆեյսի կառուցում: Կատարվում է սկզբնական և վիճակի փոփոխության ժամանակ (setState()).didUpdateWidget(): Կատարվում է երբ ծնող widget-ը թարմացնում է կոնֆիգուրացիան:setState(): Հաղորդում է ֆրեյմվորկին փոփոխության մասին, ինչը հանգեցնում է վերականգնման (build):deactivate(): Կատարվում է երբState-ը հեռացվում է widget ծառից (գուցե ժամանակավոր, օրինակ՝ tabs փոխելիս):dispose(): Զարգացման ռեսուրսների ազատում՝ stream-երից բաժանորդագրության չեղարկում, անիմացիոն կոնտրոլերների հեռացում: Կատարվում է նախքանState-ի վերջնական հեռացումը հիշողությունից:
// Օրինակ `setState`-ի օգտագործման, որը ցույց է տալիս վիճակի փոփոխությունը
class MyStatefulWidget extends StatefulWidget {
@override
_MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
int _counter = 0;
@override
void initState() {
super.initState();
// Կարգավորում
// print('initState');
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
// Զависությունները փոխվել են
// print('didChangeDependencies');
}
@override
void didUpdateWidget(MyStatefulWidget oldWidget) {
super.didUpdateWidget(oldWidget);
// Widget-ը թարմացվել է
// print('didUpdateWidget');
}
void _incrementCounter() {
setState(() {
// Վիճակի փոփոխություն, որը հանգեցնում է վերականգնման
_counter++;
// print('setState: counter = $_counter');
});
}
@override
Widget build(BuildContext context) {
// UI կառուցում
// print('build');
return Scaffold(
appBar: AppBar(
title: Text('Counter Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
@override
void deactivate() {
super.deactivate();
// Widget դեակտիվացված
// print('deactivate');
}
@override
void dispose() {
// ռեսուրսների ազատում
// print('dispose');
super.dispose();
}
}