我正在使用SafeArea窗口小部件,并希望提取不在安全区域内的底部区域的高度。如其他来源所推荐,我尝试使用MediaQuery.of(context).padding
,但它始终返回EdgeInsets.zero
。是否还有其他方法可以获取不在安全区域内的底部区域的大小?
编辑:
我将SafeArea小部件的bottom属性设置为true(bottom: true
),这总是导致EdgeInsets.zero
。设置bottom: false
会返回SafeArea的实际底部填充值。
答案 0 :(得分:1)
SafeArea 小部件的底部蚂蚁顶部属性购买默认设置为 true。 设置 'bottom: false' 和 'top: false' 返回实际 SafeArea 的底部和顶部填充值。
答案 1 :(得分:0)
要仅获取 Safe Area 的高度,请尝试在小部件树中添加 SafeArea 之前访问某个位置的 MediaQuery。这样你会得到带有一些值的 MediaQuery.of(context).padding
而不是 EdgeInsets.zero
。在小部件树中插入 SafeArea 后,填充设置为零。
SafeArea Widget 的孩子的文档说
<块引用>子代的 MediaQuery 上的内边距将适当调整 将此小部件避免的任何边归零。
所以要获得不包括所有系统层高度的高度,请尝试 -
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size;
final padding = MediaQuery.of(context).padding;
final heigth = size.height - padding.top - padding.bottom;
return SafeArea(
...
);
}
答案 2 :(得分:-1)
要获取底部填充,请使用
final bottomPadding = MediaQuery.of(context).padding.bottom;
要获取顶部填充,请使用
final topPadding = MediaQuery.of(context).padding.top;
如果要获取用作颤动材质组件的应用栏的高度
AppBar appBar = new AppBar();
appBar.preferredSize.height;