在堆栈中按基线对齐图标

时间:2019-06-14 06:12:12

标签: flutter flutter-layout

我需要通过图标的基线将其居中在堆栈的中心:

this image

我尝试

class Screen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(title: Text("Tst")),
        body: Stack(
          children: <Widget>[
            Container(
              color: Colors.white,
            ),
            Positioned(
                bottom: context.size.height / 2,
                width: context.size.width,
                child: Align(
                  alignment: Alignment.bottomCenter,
                  child: Icon(
                    Icons.add_location,
                    size: 100,
                  ),
                )),
          ],
        ));
  }
}

但是收到错误消息:

  

“在构建期间无法获取大小。”   “此渲染对象的大小尚未确定,因为框架仍在”

2 个答案:

答案 0 :(得分:0)

  

“在构建期间无法获取大小。” “此渲染对象的大小为   尚未确定,因为该框架仍在构建小部件的过程中”。

错误非常明显。您无法在构建窗口小部件之前计算其大小。

一种更好的选择是在这种情况下使用Center小部件,如hayi所建议的那样:

Center(
  child: Align(
    alignment: Alignment.bottomCenter,
    child: Icon(
      Icons.add_location,
      size: 100,
    ),
  )),

上面的代码只是一个例子。

希望这会有所帮助

答案 1 :(得分:0)

您不能像这样调用上下文的大小。您必须使用scale。还可以将MediaQueryleftright一起使用,以使小部件水平居中。

0.0