我正在尝试让我的用户界面显示两个按钮,其中一个按钮略微重叠,在全宽卡的中间。因为Stack只会和它的非定位子项一样宽,所以我添加了一个宽度为double.INIFINITY的SizedBox的非定位子项给自己一个画布来放置按钮,但我不知道放什么作为SizedBox的高度。理想情况下,我希望这个小部件能够适当地调整自己的大小,无论用户是在手机还是平板电脑上,所以我宁愿将SizedBox高度基于按钮的当前大小而不是仅对硬编码。
有没有办法找到给定现有小部件的大小?如果没有,那么确定需要在多种屏幕尺寸上看起来很好的物体的高度的方法是什么?
示例代码:
new Card(
child: new Stack(
children: <Widget>[
new SizedBox(
width: double.INFINITY,
),
new Positioned(
left: 1.0,
child: getButtonOne(),
),
new Positioned(
right: 1.0,
child: getButtonTwo(),
),
],
),
),
答案 0 :(得分:8)
简短的回答是否定的,因为在构建功能时,小部件还没有布局,所以它们没有大小。
更长的答案是,为了实现自定义布局效果,您可以使用自定义布局构建器,但在您的情况下无法提供帮助,因为自定义布局构建器无法为其子级调整自身大小。下一级是直接构建一个自定义渲染对象,这正是Stack和Row和Column等实际上是什么。那么你可以做任何你想做的事情,布局方式。