Может ли состояние во flutter вызывать само себя?

#flutter #dart

#flutter #dart

Вопрос:

У меня есть виджет с отслеживанием состояния, который обновляется с событиями нажатия кнопки, возможно ли вызвать состояние изнутри того же состояния при событии нажатия кнопки? Состояний очень много. Поэтому я хочу избежать инициализации слишком большого количества состояний.

Комментарии:

1. не могли бы вы, пожалуйста, пояснить? или просто поделитесь примером кода о том, что вы пытаетесь сделать?

2. виджет с отслеживанием состояния по определению обеспечивает мощное управление состоянием. но это зависит от того, как вы хотите его использовать

3. Код не готов. Функциональность — это StatefulWidget, внутри которого есть функции .. Одна из функций облегчает изменения в пользовательском интерфейсе. С помощью кнопки необходимо вызвать то же состояние, поэтому функция реализует новый пользовательский интерфейс. Я понимаю?

4. Да, но состояний очень много. Поэтому я хочу избежать инициализации слишком многих состояний @beerstorm

Ответ №1:

Да, вы можете вызывать setState((){}) внутри StatefulWidget. Согласно документации:

Уведомляет фреймворк о том, что внутреннее состояние этого объекта изменилось.

Это означает, что, если вы хотите обновить какое-либо значение в вашем StatefulWidget , обязательно вызовите его внутри setState((){}) , вот так: setState(() { _myState = newValue; });

Из того, что я понял, вы не хотите иметь слишком много вызовов setState((){}) функции. Поскольку вы используете кнопку, вы можете сделать это следующим образом:

 FlatButton(
  child: Text("Tap me!"),
  onPressed: () => setState((){ tapped = true}),
 ),
  

Стрелки — это синтаксический сахар, который заменяет фигурные скобки. Полезно, когда есть только одна строка кода.