在Flutter获得键盘高度

时间:2018-03-14 03:31:11

标签: dart flutter

有没有办法在Flutter中获得开放式键盘的高度?我试图在键盘高度打开时填充bottomSheet小部件。

5 个答案:

答案 0 :(得分:6)

通常viewInsets提供有关遮挡颤动ui的任何系统ui的数据。要了解键盘高度,您只需检查bottom的{​​{1}}属性,当键盘在屏幕上时,这将保持键盘的高度为零。

您可以使用viewInsets来检查viewInsets,如:

MediaQuery

注意:MediaQuery.of(context).viewInsets.bottom 属性可能具有值,即使其他系统ui从底部遮挡了颤动ui。

希望有所帮助!

答案 1 :(得分:2)

MediaQuery.of(context).viewInsets解决方案对我不起作用。即使键盘处于打开状态,它也始终显示zero。此外,查看this answer中评论最高的评论,将其用作键盘指示器是一个坏主意。

因此,这是一个单行解决方案:

final viewInsets = EdgeInsets.fromWindowPadding(WidgetsBinding.instance.window.viewInsets,WidgetsBinding.instance.window.devicePixelRatio);

然后做任何您想做的事(例如viewInsets.bottom是键盘高度):)

答案 2 :(得分:1)

在复杂的小部件树中,MediaQuery.of(context).viewInsets.bottom会给出null,即使键盘处于打开状态。因此,我们必须在树上变异值。

我制作了可在树https://pub.dev/packages/flutter_keyboard_size下提供所有所需信息的软件包

欢迎使用,如果您发现错误或想要扩展功能,请添加问题https://github.com/awaik/flutter_keyboard_size/issues

enter image description here

答案 3 :(得分:0)

这对我有用: https://pub.dev/packages/keyboard_utils

包中的示例代码: enter image description here

答案 4 :(得分:0)

就我而言,什么都没有用,但是我需要没有键盘高度的屏幕高度,并且LayoutBuilder可以完美工作。

LayoutBuilder(
  builder: (context, constraints) => Container(
    //maxHeight will change depending on your keyboard visible or not
    height:constraints.maxHeight,
  ),
);

理论上您可以做到

LayoutBuilder(
  builder: (context, constraints) {
    double keyboardHeight = MediaQuery.of(context).size.height - constrains.maxHeight;
  }
);