【发布时间】:2020-11-29 12:08:37
【问题描述】:
我发现了一些关于在颤振中计算高度的主题,但没有一个回答我的问题。我正在尝试计算100% of device height。我想,我必须从MediaQuery.of().size.height 中减去两件事。首先是AppBar 高度,所以我通过创建变量appBar 并获取属性preferredSize.height 来计算它。其次是appBar 上方的栏(包含电池状态、通知等内容)。
这是最简单的例子:
@override
Widget build(BuildContext context) {
var appBar = AppBar(
title: Text(widget.title),
);
return Scaffold(
appBar: appBar,
body: Center(
child: Builder(
builder: (ctx) => Column(
children: <Widget>[
Container(
height: MediaQuery.of(ctx).size.height -
MediaQuery.of(ctx).padding.top -
appBar.preferredSize.height,
color: Colors.red,
)
],
),
),
),
);
}
这是我的主要小部件,所以我必须使用Builder 创建上下文。但是,它仍然不等于设备高度的 100%。 24px 太多了。我不想减去 24px,因为它在另一台设备上可能更多/更少。这个例子有什么问题?
【问题讨论】:
-
你会在 appBar 和 statusBar 之后得到总高度
height: MediaQuery.of(ctx).size.height,这实际上会自动减少一些东西。不要隐瞒任何事情。 -
我不确定。我试过了,而不是 24px 太多,我现在有 80px 太多了。我想我需要减去
AppBar高度和StatsBar填充,但它仍然不等于剩余的设备高度。 -
尝试使用
LayoutBuilder并用SafeArea小部件包裹它,然后您可以在LayoutBuilder的构建器函数中访问您想要的高度!参考见this -
尝试将
Container小部件包装为Builder的父级 -
自从我开始使用颤振
MediaQuery.of(context).size.height一直提供设备的完整高度。问题是问题。如果您希望容器填充高度,请将其包装在Expanded小部件中
标签: flutter responsive