флаттер SwitchListTile не меняет состояние переключателя при нажатии
When I use a only switch, it works without a function. but using function does not work
class TestListSwitch extends StatefulWidget {
@override
State<TestListSwitch> createState() => _TestListSwitchState();
}
class _TestListSwitchState extends State<TestListSwitch> {
bool _stateLogin = false;
Widget _buildSwitchListTile(
String title,
String description,
bool currentValue,
Function updateValue,
) {
return SwitchListTile(
title: Text(title),
value: currentValue,
subtitle: Text(
description,
),
onChanged: (value) => updateValue,
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: SafeArea(
child: _buildSwitchListTile('Autorize', 'test', _stateLogin, (value) {
setState(
() {
_stateLogin = value;
},
);
}),
));
}
}
Пожалуйста, помогите мне...
Вот рабочее решение:
Widget _buildSwitchListTile(
String title,
String description,
bool currentValue,
Function(bool) updateValue, // changed from Function updateValue
) {
return SwitchListTile(
title: Text(title),
value: currentValue,
subtitle: Text(
description,
),
onChanged: updateValue, // changed from (value) => updateValue
);
}
Ваша функция не была правильно передана и вызвана.
В родительском виджете вы также должны добавить SetState() для обновления функции виджета сборки.