#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}),
),
Стрелки — это синтаксический сахар, который заменяет фигурные скобки. Полезно, когда есть только одна строка кода.