【发布时间】:2019-01-18 18:08:01
【问题描述】:
我在应用程序中有文本字段。当点击文本字段时,这个打开的键盘会自动打开。但是当在它后面的列表(firebaseAnimatedList)上向下滚动时,键盘不会被关闭。这不正常,在 iOS 上是个大问题,因为无法按下后退按钮关闭。
有人知道怎么解决吗?
【问题讨论】:
标签: flutter flutter-layout flutter-animation
我在应用程序中有文本字段。当点击文本字段时,这个打开的键盘会自动打开。但是当在它后面的列表(firebaseAnimatedList)上向下滚动时,键盘不会被关闭。这不正常,在 iOS 上是个大问题,因为无法按下后退按钮关闭。
有人知道怎么解决吗?
【问题讨论】:
标签: flutter flutter-layout flutter-animation
这就是我所做的:
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。
【讨论】:
你可以使用keyboardDismissBehavior。
return ListView.builder(
keyboardDismissBehavior: ScrollViewKeyboardDismissBehavior.onDrag,
【讨论】:
您可以将以下代码放入列表滚动监听器中。
FocusScope.of(context).requestFocus(new FocusNode());
【讨论】:
这就是你想要的效果:
NotificationListener(
onNotification: (ScrollNotification scrollInfo) {
if (scrollInfo is ScrollUpdateNotification) {
if (scrollInfo.scrollDelta >= 20.0) {
FocusScope.of(context).requestFocus(FocusNode());
}
}
},
child: new FirebaseAnimatedList ...)
【讨论】: