Sobes.tech
Middle

Flutter-ში widget-კონტროლერების რა მიზნით გამოიყენება?

sobes.tech AI

პასუხი AI-სგან

Flutter-ში ვიჯეტის კონტროლერები გამოიყენება კონკრეტული ვიჯეტის მდგომარეობის ან ქცევის გარედან მართვისთვის, ასევე მისთანა ურთიერთქმედებისთვის.

ძირითადი მიზნები:

  • პროგრამული მართვა: ვიჯეტის თვისებების შეცვლა (მაგალითად, სიის გარჩევა, კურსორის მართვა ტექსტურ ველზე) პირდაპირი მომხმარებლის ურთიერთქმედების გარეშე.
  • ინფორმაციის მიღება: მიმდინარე მდგომარეობის წაკითხვა (მაგალითად, გარჩევის პოზიცია, შეტანილი ტექსტი).
  • ღონისძიებებზე რეაგირება: ვიჯეტთან დაკავშირებული მოქმედებების შესრულება სხვა ნაწილების მიერ მოვლენებზე პასუხად.

პოპულარული კონტროლერების მაგალითები:

  • TextEditingController: ტექსტური ველების მართვა (TextField, TextFormField). საშუალებას აძლევს მიიღოს და დაყენოს ტექსტი, მართოს შერჩევა და კურსორის პოზიცია.
    final myController = TextEditingController();
    
    // ტექსტის მიღება
    final text = myController.text;
    
    // ტექსტის დაყენება
    myController.text = 'ახალი ტექსტი';
    
  • ScrollController: სლაიდერებად ვიჯეტების მართვა (ListView, GridView, SingleChildScrollView). საშუალებას აძლევს პროგრამულად გარჩევა, მიიღოს მიმდინარე პოზიცია და მოსმენა გარჩევის მოვლენების.
    final myScrollController = ScrollController();
    
    // დაწყებისკენ გარჩევა
    myScrollController.animateTo(
      0,
      duration: Duration(milliseconds: 500),
      curve: Curves.easeOut,
    );
    
    // მიმდინარე გარჩევის პოზიციის მიღება
    final position = myScrollController.position.pixels;
    
  • PageController: გვერდების მართვა (PageView). საშუალებას აძლევს გადართვას გვერდებს შორის, მიიღოს მიმდინარე გვერდი და მოსმენა გვერდის ცვლილების მოვლენების.
    final myPageController = PageController();
    
    // გადართვა შემდეგ გვერდზე
    myPageController.nextPage(
      duration: Duration(milliseconds: 300),
      curve: Curves.easeIn,
    );
    
    // მიმდინარე გვერდის მიღება
    final currentPage = myPageController.page;
    

კონტროლერები ჩვეულებრივ გადაეცემა შესაბამის ვიჯეტს მისი კონსტრუქტორის მეშვეობით. კონტროლერის სიცოცხლის ციკლის მართვა (შექმნა და წაშლა) უნდა ხდებოდეს იმ ვიჯეტში, რომელიც იყენებს მას, ხშირად initState მეთოდში მისი შექმნის და dispose მეთოდში მისი განთავისუფლების მიზნით.

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(); // მნიშვნელოვანია რესურსების განთავისუფლება
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return TextField(
      controller: _textController,
      // ... სხვა თვისებები
    );
  }
}

კონტროლერების გამოყენება საშუალებას აძლევს მკაფიოდ გამოყოთ ვიჯეტის მართვის ლოგიკა მისი წარმოდგენიდან.