美文网首页
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