Loading...

StatelessWidget

StatelessWidget   

         Адатта, тиркемени түзүп жатканда, жаңы виджеттер, адатта, StatelessWidget классынын же StatefulWidget классынын катары аныкталат . Алардын ортосунда кандай айырма бар?

Виджеттер эки түргө бөлүнөт: Stateful (имеют состояние) жана stateless (не имеют состояния).

         Статусу жок (stateless) виджеттер колдонмо учурунда касиеттерин өзгөртпөйт. Мындай виджеттер контейнер виджетинде пайда болгон тышкы cырты менен гана өзгөртүүгө болот. Ал эми StatelessWidget классы виджеттин ушул түрүн гана көрсөтөт.

         Статусту сактаган виджеттер (stateful) тиркеме иштеп жатканда алардын касиеттерин динамикалык түрдө өзгөртө алат. Жана StatefulWidget классы абалды сактай турган виджеттерди билдирет.

         Келгиле, адегенде StatelessWidget классы менен кантип иштей аларыбызды карап көрөлү .

         Бул класс абалды сактабаган виджеттерди түзүү үчүн ылайыктуу. Өзүңүздүн субклассыңызды түзүп жатканда build() ыкмасын жокко чыгарышыңыз керек . Бул ыкма интерфейсти куруу үчүн колдонулат жана адатта үч жагдайда чакырылат:

         виджет колдонуучу интерфейсин сүрөттөгөн виджет дарагына биринчи жолу кошулганда.

         StatelessWidget субклассын жайгаштыруучу контейнер StatelessWidget субклассынын конфигурациясын өзгөрткөндө

         StatelessWidget субклассы өзгөрүүлөргө көз каранды болгон InheritedWidget объекти болгондо.

         Эгер контейнер салынган StatelessWidgetтин конфигурациясын тез-тез өзгөртсө, анда метод build() ошончолук тез-тез чакырылат. Жана бул кырдаалда, сиз бул ыкмага чалууну оптималдаштыруу керек болушу мүмкүн.  Дагы бир ыкма - мүмкүн болушунча виджеттерди аныктоодо const операторун колдонуу, ошондой эле виджеттердин туруктуу конструкторун аныктоо.

StatelessWidgetтин эң жөнөкөй субклассынын аныктамасы:

class MyStatelessWidget extends StatelessWidget{

  @override

  Widget build(BuildContext context) {

    return Container(

      color: Colors.white,

    );

  }

}

         BuildContext объекти виджеттин контексти жөнүндө маалыматты камтыган ыкмага параметр катары build() өткөрүлөт .

         Метод build()башка виджетти кайтарышы керек. Бул учурда, ал Контейнер виджетин кайтарат.

Виджетиңизди кантип колдонсо болот? Жөнөкөй виджет түзүп, колдонолу:

import 'package:flutter/material.dart';

void main() {

  runApp(MyStatelessWidget());

}

class MyStatelessWidget extends StatelessWidget{

  @override

  Widget build(BuildContext context) {

    return Container(

      color: Colors.white,

      padding: EdgeInsets.only(top:40),

      child: const Text(

          "Hello Flutter from METANIT.COM",

          style: TextStyle(fontSize: 22, color: Colors.lightBlue),

          textAlign: TextAlign.center,

          textDirection: TextDirection.ltr,

      ),  );  }  }

Бул учурда, ыңгайлаштырылган виджет татаалыраак структураны камтыйт - ал Контейнерди камтыйт, ал өз кезегинде Тext виджетин камтыйт.