Middle
Flutter-də widget-kontrollerlər nə üçün istifadə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
Flutter'da widget idarəediciləri, müəyyən bir widget-in vəziyyətini və ya davranışını xaricdən idarə etmək və onunla qarşılıqlı əlaqə qurmaq üçün istifadə olunur.
İstifadə əsas məqsədləri:
- Proqramlaşdırılmış idarəetmə: İstifadəçi ilə birbaşa qarşılıqlı əlaqə olmadan widget-in xüsusiyyətlərini dəyişdirmək (məsələn, siyahını sürüşdürmək, mətn sahəsində imleci idarə etmək).
- Məlumat əldə etmək: Widget-in hazırkı vəziyyətini oxumaq (məsələn, hazırkı sürüşmə mövqeyi, daxil edilmiş mətn).
- Hadələrə cavab vermək: Digər hissələrdəki hadisələrə cavab olaraq widget ilə əlaqəli əməliyyatlar həyata keçirmək.
Populyar idarəedicilərin nümunələri:
TextEditingController: Mətn sahələrinin idarə olunması (TextField,TextFormField). Mətnin alınması və təyin edilməsi, seçimin və imlecin mövqeyinin idarə olunması.final myController = TextEditingController(); // Sahədən mətn almaq final text = myController.text; // Sahədə mətn təyin etmək myController.text = 'Yeni mətn';ScrollController: Sürüşdürülən widgetlərin idarə olunması (ListView,GridView,SingleChildScrollView). Proqram vasitəsilə sürüşdürmək, hazırkı sürüşmə mövqeyini almaq və sürüşmə hadisələrini dinləmək.final myScrollController = ScrollController(); // Sürüşməni başlanğıca yönəlt myScrollController.animateTo( 0, duration: Duration(milliseconds: 500), curve: Curves.easeOut, ); // Hazırkı sürüşmə mövqeyini almaq final position = myScrollController.position.pixels;PageController: Səhifə widgetlərinin idarə olunması (PageView). Səhifələr arasında keçid etmək, hazırkı səhifəni almaq və səhifə dəyişiklik hadisələrini dinləmək.final myPageController = PageController(); // Növbəti səhifəyə keçid myPageController.nextPage( duration: Duration(milliseconds: 300), curve: Curves.easeIn, ); // Hazırkı səhifəni almaq final currentPage = myPageController.page;
İdarəedicilər adətən müvafiq widget-ə onun konstruktoru vasitəsilə ötürülür. İdarəedicinin həyat dövrü (yaradılması və silinməsi) onu istifadə edən widget-də baş verməlidir, çox vaxt initState metodunda yaradılır və dispose metodunda silinir.
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
late final TextEditingController _textController;
@override
void initState() {
super.initState();
_textController = TextEditingController();
}
@override
void dispose() {
_textController.dispose(); // Resursları sərbəst buraxmaq vacibdir
super.dispose();
}
@override
Widget build(BuildContext context) {
return TextField(
controller: _textController,
// ... digər xüsusiyyətlər
);
}
}
İdarəedicilərdən istifadə widget-in idarəetmə məntiqini onun təqdimatından ayırmağa imkan verir.