final _textProvider = StateProvider.autoDispose((ref) => '');
final _keyboardShownProvider = StateProvider.autoDispose((ref) => false);
@override
Widget build(BuildContext context, WidgetRef ref) {
final focusNode = useFocusNode();
// TextField
final textEditingController = useTextEditingController();
useEffect(
() {
// 表示の瞬間
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
focusNode.addListener(() {
_onFocusChange(context, ref: ref, focusNode: focusNode);
});
});
return null;
},
[
focusNode,
],
);
void _onFocusChange(
BuildContext context, {
required WidgetRef ref,
required FocusNode focusNode,
}) {
final hasFocus = focusNode.hasFocus;
if (hasFocus) {
FocusScope.of(context).autofocus(focusNode);
}
debugPrint('Focus: $hasFocus');
ref.read(_keyboardShownProvider.notifier).state = hasFocus;
}
by Happy Hacking Keyboard - 一度使ったら戻れない極上のキータッチ | PFU