美文网首页
Flutter 之 Stack 、IndexedStack 和

Flutter 之 Stack 、IndexedStack 和

作者: Goach | 来源:发表于2019-09-25 11:14 被阅读0次

    Stack 系列为层叠的控件,类似 Android 的 FrameLayout 的作用。

    Stack

    new Center(
              child: new Stack(
                alignment: Alignment.center,
                textDirection: TextDirection.ltr,
                fit: StackFit.loose,
                overflow: Overflow.clip,
                children: <Widget>[
                  SizedBox(
                    width: 100,
                    height: 100,
                    child: Card(
                      color:Colors.red,
                    ),
                  ),
                  SizedBox(
                    width: 90,
                    height: 90,
                    child: Card(
                      color: Colors.yellow,
                    ),
                  ),
                  SizedBox(
                    width: 80,
                    height: 80,
                    child: Card(
                      color: Colors.blue,
                    ),
                  ),
                  SizedBox(
                    width: 70,
                    height: 70,
                    child: Card(
                      color: Colors.black,
                    ),
                  ),
                  SizedBox(
                    width: 60,
                    height: 60,
                    child: Card(
                      color: Colors.orange,
                    ),
                  )
                ],
              ),
            )
    

    属性

    1. alignment

    Alignment,对齐方式

    1. textDirection

    TextDirection,文字方向

    1. fit:

    StackFit.loose 尽量取最小宽度和高度
    StackFit.expand 尽量占满 Stack 的宽度和高度
    StackFit.passthrough 使用 Stack 父布局的宽度和高度的约束

    1. overflow

    Overflow.clip 超出 Stack 的宽度或者高度进行裁剪
    Overflow.visible 超出 Stack 的宽度或者高度显示

    image.png

    IndexedStack

    Stack 的子类,多了一个 index 属性。主要作用是指定哪层显示,其他层级不显示。fit 属性改为 sizing。

    new IndexedStack(
                alignment: Alignment.center,
                textDirection: TextDirection.ltr,
                sizing: StackFit.loose,
                index:1,
                children: <Widget>[
    ....
    ],
              ),
    

    Positioned

    Positioned ,通常结合 Stack 一起使用,相对 Stack 固定位置的布局,

    
    Stack(
                alignment: Alignment.center,
                textDirection: TextDirection.ltr,
                fit: StackFit.loose,
                overflow: Overflow.clip,
                children: <Widget>[
                  Positioned(
                    left:20,
                    top:20,
                    right:20,
                    bottom:20,
                    //left right,width不可以同时设置
                    width: 100,
                    //top bottom,height不可以同时设置
                    height: 100,
                    child: Text('Positioned'),
                  )
                ],
              )
    

    相关文章

      网友评论

          本文标题:Flutter 之 Stack 、IndexedStack 和

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