Don*_*tas 5 padding flutter flutter-layout
我正在使用 SafeArea Widget 并想提取不在安全区域内的底部区域的高度。正如我尝试使用的其他来源所推荐的那样,MediaQuery.of(context).padding但它总是返回EdgeInsets.zero. 有没有其他方法可以获得不在安全区域内的底部区域的大小?
编辑:
我将 SafeArea 小部件的底部属性设置为 true ( bottom: true),这总是导致EdgeInsets.zero. 设置bottom: false返回实际的 SafeArea 的底部填充值。
小智 28
为了让底部填充,使用
final bottomPadding = MediaQuery.of(context).padding.bottom;
Run Code Online (Sandbox Code Playgroud)
获得顶部填充使用
final topPadding = MediaQuery.of(context).padding.top;
Run Code Online (Sandbox Code Playgroud)
如果您想获取用作 Flutter Material 组件的 App Bar 的高度
AppBar appBar = new AppBar();
appBar.preferredSize.height;
Run Code Online (Sandbox Code Playgroud)
import 'dart:ui' as ui;
MediaQueryData.fromWindow(ui.window).size;
MediaQueryData.fromWindow(ui.window).padding;
Run Code Online (Sandbox Code Playgroud)
要仅获取安全区域的高度,请尝试在小部件树中添加安全区域之前访问 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(
...
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9820 次 |
| 最近记录: |