Я понимаю, что шаблон блока или getX предоставит дополнительные функции, кроме простого управления состоянием при флаттере, но меня больше всего беспокоит, почему я должен использовать bloc, getX или любую другую библиотеку управления состоянием вместо того, чтобы просто использовать setState с глобальными переменными?

Я также понимаю, что если я обновлю значение глобальной переменной из дочернего класса и вернусь к родительскому классу, его состояние не будет обновлено, но для решения этой проблемы я просто вызвал setState () родительского элемента из дочернего класса. . Что-то не так с моим подходом, и если да, то что?

3
Sahil 13 Май 2021 в 21:57

2 ответа

Лучший ответ

Вызов функции setState снова создает весь виджет, что является проблемой производительности. Управление состоянием управляет состоянием без создания всего виджета. Кроме того, если ваши данные используются на нескольких экранах, вы должны передавать эти данные, используя аргументы, что является громоздким. Вот почему мы используем библиотеки государственного управления. Надеюсь, он ответит на вопрос.

0
Ali Yar Khan 14 Май 2021 в 14:25

Всякий раз, когда вы вызываете функцию setState(), весь ваш виджет с сохранением состояния или без него будет перестраиваться заново. Это снижает производительность вашего приложения до низкого уровня.

Например: у вас есть виджет без сохранения состояния, например "Читая"

Scaffold(
 body: Column(
  children: [
   Container(
    child: Text(SomeText);
   ),
   FlatButton(
    onPressed: (){
     seState({
      //change Text Function
     });
    }
   )
  ]
 )
)

Здесь, когда вы нажимаете кнопку и ее функция заключается в изменении значения SomeText, теперь весь этот код будет перестроен, и да, он заменит SomeText новым значением. Но он не просто изменяет его, но и перестраивает весь виджет, чтобы изменить его.

Здесь Вместо метода setState(), если вы используете какие-либо библиотеки управления состоянием, он изменит только значение SomeText, не затрагивая другие виджеты.

Как новичок вы можете попробовать Provider

2
ijas 13 Май 2021 в 19:24