Первоначально виджет переключателя трепетания имеет значение false. После свайпа переключатель верен. Но если я снова проведу пальцем по экрану, метод onChange не сработает.
Я использую setState () для изменения значения переключателя как метода onChanged. Я попытался передать BuildContext, но безуспешно.
bool value = false;
void _setValue(bool value) {
print('before: ' + this.value.toString());
setState(() => this.value = value);
print('after: ' + this.value.toString());
}
Widget _getSwitch() {
return Switch(
value: this.value,
onChanged: _setValue,
);
}
ожидаемый результат:
Изначально false, затем измените значение на true.
I / flutter (20662): до: ложь
I / flutter (20662): после: истина
переключить на false
I / flutter (20662): до: true
I / flutter (20662): после: ложь
переключить на true
I / flutter (20662): до: ложь
I / flutter (20662): после: истина
фактический результат:
Изначально false, теперь я переключаюсь на true.
I / flutter (20662): до: ложь
I / flutter (20662): после: истина
Пока все отлично!
Сейчас переключаюсь на false ... Ничего не произошло. => нет вызова onChanged
Теперь я переключаюсь на true и получаю следующий результат:
I / flutter (20662): до: true
I / flutter (20662): после: истина
Не имеет смысла !?