美文网首页Flutter教学
Flutter(47):Layout组件之Align

Flutter(47):Layout组件之Align

作者: starryxp | 来源:发表于2020-10-12 10:43 被阅读0次

    Flutter教学目录持续更新中

    Github源代码持续更新中

    1.Align介绍

    一个widget,它可以将其子widget对齐,并可以根据子widget的大小自动调整大小。

    2.Align属性

    • alignment = Alignment.center:
    • widthFactor:宽度因子
    • heightFactor:高度因子
    • child:

    3.Alignment属性

    • Alignment.topLeft = Alignment(-1.0, -1.0):
    • Alignment.topCenter = Alignment(0.0, -1.0):
    • Alignment.topRight = Alignment(1.0, -1.0):
    • Alignment.centerLeft = Alignment(-1.0, 0.0):
    • Alignment.center = Alignment(0.0, 0.0):
    • Alignment.centerRight = Alignment(1.0, 0.0):
    • Alignment.bottomLeft = Alignment(-1.0, 1.0):
    • Alignment.bottomCenter = Alignment(0.0, 1.0):
    • Alignment.bottomRight = Alignment(1.0, 1.0):
    • Alignment()
    • Alignment.lerp()
      这个属性之前在讲Container已经讲过了,传送门:Flutter(44):Layout组件之Container

    4.Align尺寸调节(约束)

    这个跟Center是一样的,其实就是Center扩展,可以指定alignment而已。

    • widthFactor、heightFactor都为空,宽度会尽可能的大,高度则刚好包裹子控件
    • widthFactor(heightFactor)不为空,Center的宽度(高度) = 因子*子控件的宽度(高度)
      注意:因子要么为空,要么>=0

    5.例子

    1602469473421.jpg
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Align'),
          ),
          body: Column(
            children: [
              Container(
                color: Colors.amber,
                child: Align(
                  alignment: Alignment.center,
                  child: Container(
                    width: 50,
                    height: 50,
                    color: Colors.red,
                  ),
                ),
              ),
              Container(
                margin: EdgeInsets.only(top: 10),
                color: Colors.amber,
                child: Align(
                  alignment: Alignment.center,
                  widthFactor: 2,
                  child: Container(
                    width: 50,
                    height: 50,
                    color: Colors.red,
                  ),
                ),
              ),
              Container(
                margin: EdgeInsets.only(top: 10),
                color: Colors.amber,
                child: Align(
                  alignment: Alignment.center,
                  heightFactor: 2,
                  child: Container(
                    width: 50,
                    height: 50,
                    color: Colors.red,
                  ),
                ),
              ),
              Container(
                margin: EdgeInsets.only(top: 10),
                color: Colors.amber,
                child: Align(
                  alignment: Alignment.center,
                  widthFactor: 2,
                  heightFactor: 2,
                  child: Container(
                    width: 50,
                    height: 50,
                    color: Colors.red,
                  ),
                ),
              ),
            ],
          ),
        );
      }
    

    下一节:Layout组件之FittedBox

    Flutter(48):Layout组件之FittedBox

    Flutter教学目录持续更新中

    Github源代码持续更新中

    相关文章

      网友评论

        本文标题:Flutter(47):Layout组件之Align

        本文链接:https://www.haomeiwen.com/subject/dikupktx.html