【问题标题】:Keyboard dismissing when setState is called调用 setState 时键盘关闭
【发布时间】:2021-03-09 17:23:49
【问题描述】:

当 TextFormField 是否有焦点时,我想在 Scaffold 中隐藏/显示一些小部件。

我已经设法通过将 TextField 包装在 Focus 小部件中来做到这一点,但是每当我点击它开始输入小部件时,我试图隐藏的小部件就会消失,但键盘会失去焦点,直到我第二次点击 TextField。

任何想法为什么会发生这种情况以及如何防止它?

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    你可以使用flutter_keyboard_visibility包:

    有几种方法可以用它来构建你的 Widget 树,比如使用单独的布尔值:

        // Add new variable for keyboard in your Stateful widget
        bool keyboardIsVisible = false;
    
        // Add listener at initState
          @override
          void initState() {
            super.initState();
    
            KeyboardVisibilityNotification().addNewListener(
              onChange: (bool visible) {
              keyboardIsVisible = visible;
              setState(() {});
          },
        );
      }
    

    或者您可以使用他们的构建器小部件:

        import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
    
    /// In any of your widgets...
    @override
    Widget build(BuildContext context) {
      return KeyboardVisibilityBuilder(
        builder: (context, isKeyboardVisible) {
          return Text(
            'The keyboard is: ${isKeyboardVisible ? 'VISIBLE' : 'NOT VISIBLE'}',
          );
        }
      );
    

    【讨论】:

      猜你喜欢
      • 2018-11-28
      • 1970-01-01
      • 2020-01-03
      • 2017-03-25
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      • 2018-01-23
      相关资源
      最近更新 更多