关闭屏幕键盘,然后导航到新屏幕(以确保键盘不会侵犯新屏幕的大小)

问题描述 投票:0回答:2

标题总结得很好。在 Flutter 中,您可以通过移除键盘焦点来关闭键盘:

  FocusScope.of(context).unfocus();

你可以像这样导航到一个新屏幕(很多方式,只是一个例子):

Navigator.of(context).pushNamed('routeName');

但是,您不能等到键盘关闭后再导航到新屏幕。

我想做这样的事情:

await FocusScope.of(context).unfocus();
Navigator.of(context).pushNamed('routeName');

^ 这行不通,因为你做不到

await
.unfocus()
.

或:

FocusScope.of(context).unfocus();
await Future.delayed(const Duration(seconds: 1));
Navigator.of(context).pushNamed('routeName');

^ 这不起作用,因为您不能在

BuildContext
间隙上使用
async

如何在导航之前等待键盘消失?因为,目前,在导航的同时关闭键盘意味着您正在导航到的屏幕会经历一段短时间,屏幕键盘会阻止新屏幕显示为全尺寸。这看起来很难看。

谢谢。

flutter dart flutter-layout soft-keyboard
2个回答
0
投票

每当你进入新屏幕时,在新屏幕的 initState 函数中运行下面的代码。 这可以帮助您在访问新屏幕时关闭屏幕键盘。

@override
void initState(){
   FocusScope.of(context).unfocus();
}

0
投票

在下一个(或上一个)屏幕的脚手架中写这个

resizeToAvoidBottomInset: false
© www.soinside.com 2019 - 2024. All rights reserved.