Sobes.tech
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.