Удалите слушателя из FocusNode с помощью Flutter Hooks

Я недавно начал использовать Flutter Hooks, и мне ДЕЙСТВИТЕЛЬНО это понравилось. Мне удалось преобразовать несколько моих StatefulWidgets в HookWidgets, и это довольно круто. Единственное, что я пытаюсь понять, это как правильно удалить слушателей из FocusNode, созданного useFocusNode.

Если я сделаю это способом StatefulWidget , он, похоже, будет работать хорошо (в основном, следуя этому примеру из документации Flutter):

      class ItemWidget extends StatefulWidget {
...
}

class _ItemWidgetState extends State<ItemWidget> {
...

late FocusNode _focusNode;

@override
void initState() {
    super.initState();
    _focusNode = FocusNode(debugLabel: widget.key.toString());
    _focusNode.addListener(_handleFocusChange);
}

void _handleFocusChange() {
    debugPrint('${_focusNode.debugLabel} has ${_focusNode.hasFocus ? '' : 'lost'} focus');
}

@override
Widget build(BuildContext context) {
...
}

@override
void dispose() {
    _focusNode.removeListener(_handleFocusChange);
    super.dispose();
}

Но тогда как мне это сделать с помощью WidgetHook и useFocusNode? Я знаю, как создать FocusNode и добавить слушателя, но где его удалить? Следует ли мне использовать для этого useEffect ? Не знаю, как это сделать.

Спасибо!

0 ответов

Другие вопросы по тегам