首页 文章

有没有办法获得现有小部件的大小?

提问于
浏览
8

我试图让我的UI显示两个按钮,一个略微重叠另一个,在一个全宽卡的中间 . 因为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(),
      ),
    ],
  ),
),

1 回答

  • 8

    简短的回答是否定的,因为在构建功能时,小部件尚未布局,因此它们没有大小 .

    更长的答案是,为了实现自定义布局效果,您可以使用自定义布局构建器,但在您的情况下无法帮助,因为自定义布局构建器无法将其自身调整为其子项 . 下一级是直接构建一个自定义渲染对象,这正是Stack和Row和Column等实际上是什么 . 那么你可以做任何你想做的事情,布局方面 .

相关问题