万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

focus勝手に外れる現象

  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;
  }

HHKBのここが好き!
by Happy Hacking Keyboard - 一度使ったら戻れない極上のキータッチ | PFU