#flutter #dart
#флаттер #дротик
Вопрос:
Я не могу найти простой способ обновить ряд переменных в моем проекте Flutter. Сначала я попытался использовать перечисления и функции для изменения переменных внутри setState((){})
вызова. У меня есть что-то вроде этого:
void changeMode(Mode mode) {
if (mode == Mode.start) {
print('App is now in start mode');
mode = Mode.start;
bool1 = true;
bool2 = false;
bool3 = false;
color1 = kAColor1;
color2 = kAColor2;
} else if ...}
Но ничего не обновляется, я полагаю, это связано с тем, что моя функция ничего не возвращает.
Если я жестко закодирую каждую отдельную переменную в setState((){})
, это будет работать нормально, но это абсолютно неэффективно и беспорядочно для исправления.
Может быть, мне следует использовать классы? Нужно ли мне создавать суперкласс, содержащий все подклассы, чтобы сделать что-то подобное?
Комментарии:
1. Вы пытались напечатать значения, которые вы передавали этим переменным?
2. Выполняется начальная инструкция print, но переменные не изменяются
Ответ №1:
Каждый раз, когда вы вызываете setState, ваш пользовательский интерфейс будет перестраиваться. Вы можете использовать class
или map
для манипулирования вашими данными.
С помощью класса:
setState(() {
currentData = actualData.copyWith(bool1: false)
})
Таким образом, вы изменяете только те данные, которые отличаются от currentData
. В этом примере я сохраняю всю информацию из currentData
и изменяю только bool1
значение.
Obs:
copyWith
этоfactory
, которые возвращают тот же типcurrentData
.