Почему логическое состояние не изменяется с помощью hook?

#flutter #hook

#flutter #hook

Вопрос:

Как переключить значение с помощью Hook? Я пробовал этот код, но состояние никогда не изменялось.

Код:

 class ExampleScreen extends HookWidget {
  @override
  Widget build(BuildContext context) {
    var toggleValue = useState(false);
    
    return Scaffold(
      body: Checkbox(
                    value: toggleValue .value,
                    onChanged: (value) {
                      toggleValue.value !=  toggleValue.value;
                      print("n toggleValue ${ toggleValue .value}n");
                    },
    );
  }
}
 

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

1. Расширяет ли HookWidget StatefulWidget?

2. своего рода. @VictorKwok

3. это библиотека. @VictorKwok pub.dev/пакеты / flutter_hooks

Ответ №1:

Вы должны использовать значение, возвращенное из обратного вызова OnChanged, для присвоения нового значения. Новое значение не присваивается автоматически ValueNotifier.value .

 Widget build(BuildContext context) {
    var toggleValue = useState(false);
    return Scaffold(
        body: Checkbox(
          value: toggleValue.value,
          onChanged: (value) {
            toggleValue.value = value!;
            print("n toggleValue $valuen");
          },
        )
    );
  }
 

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

1. не работает, оба одинаковые

2. @winter пожалуйста, проверьте мой обновленный ответ