【问题标题】:Dismiss keyboard on scroll?关闭滚动键盘?
【发布时间】:2019-01-18 18:08:01
【问题描述】:

我在应用程序中有文本字段。当点击文本字段时,这个打开的键盘会自动打开。但是当在它后面的列表(firebaseAnimatedList)上向下滚动时,键盘不会被关闭。这不正常,在 iOS 上是个大问题,因为无法按下后退按钮关闭。

有人知道怎么解决吗?

【问题讨论】:

    标签: flutter flutter-layout flutter-animation


    【解决方案1】:

    这就是我所做的:

    NotificationListener(
      onNotification: (t) {
        if (t is UserScrollNotification) {
          FocusScope.of(context).requestFocus(FocusNode());
        }
      },
      child: ListView.builder(
        itemBuilder: (_, i) => Container(),
        itemCount: items.length,
      ),
    );
    

    附加ScrollListener 对我不起作用,因为Android 使用ClampingScrollPhysics,并且它只会在ListView 项目长于父项时接收滚动事件。但是,NotificationListener 将接收所有冒泡的事件,包括 UserScrollNotification

    【讨论】:

      【解决方案2】:

      你可以使用keyboardDismissBehavior。

      return ListView.builder(
              keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag,
      

      【讨论】:

        【解决方案3】:

        您可以将以下代码放入列表滚动监听器中。

        FocusScope.of(context).requestFocus(new FocusNode());

        【讨论】:

        • 感谢您的回复!我可以使用 onTap() 和 GestureDetector 来实现。但不知道添加到滚动调用。我正在使用动画列表。滚动动画列表键盘关闭时在哪里添加?
        【解决方案4】:

        这就是你想要的效果:

        NotificationListener(
         onNotification: (ScrollNotification scrollInfo) {
        
           if (scrollInfo is ScrollUpdateNotification) {
             if (scrollInfo.scrollDelta >= 20.0)      {
               FocusScope.of(context).requestFocus(FocusNode());
              }
             }
        
            },
         child: new FirebaseAnimatedList ...)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-06-14
          相关资源
          最近更新 更多