Code前端首页关于Code前端联系我们

Flutter Stack 和 Positioned(级联布局)示例说明

terry 2年前 (2023-09-23) 阅读数 63 #移动小程序

Flutter 中的级联布局类似于 Web 上的绝对定位和 Android 中的框架布局。子组件可以根据父容器四个角的位置来定义自己。绝对定位允许将子组件放置在彼此的顶部(按照代码中指定的顺序)。 Flutter使用两个组件PutynPositioned来实现绝对定位。 Putyn 允许将子组件放置在彼此的顶部,而 定位 基于

♷❓❓❓ 的四个角。 †所谓部分定位,这里特指仅在某个轴上定位:为水平、❙❓❝上是垂直轴。只要它包含轴上的定位属性,它就会定位在该轴上。 ? alignment对齐参考系,即:textDirection的值为TextDirection.ltr❙,则❙♿

Stack({
    this.alignment = AlignmentDirectional.topStart,
    this.textDirection,
    this.fit = StackFit.loose,
    this.overflow = Overflow.clip,
    List<Widget> children = const <Widget>[],
})
复制代码
  • 开始 表示left side,end表示Right,即从左到右的顺序;如果textDirection的值为TextDirection.rtl,则代表右侧,end代表左侧,即, 从右到左
  • fit:此参数用于确定的子组件如何适合尺寸Stack
    Stack({
        this.alignment = AlignmentDirectional.topStart,
        this.textDirection,
        this.fit = StackFit.loose,
        this.overflow = Overflow.clip,
        List<Widget> children = const <Widget>[],
    })
    复制代码
    • ,而不定位
    Stack Fit.loose 表示所使用的子组件的大小,Stack Fit.expand 表示扩展到大小♷♓❓♓。?部分将被切断,但如果 overflow 的值为 Overflow.visible,则不会被切断。

位于

const Positioned({
    Key key,
    this.left,
    this.top,
    this.right,
    this.bottom,
    this.width,
    this.height,
    @required Widget child,
})
复制代码

左、上方

♷ 或Stack

左、上、右、下四边之间的距离。 widthheight用于指定要定位的元素的宽度和高度。注: 宽度 高度
Stack({
    this.alignment = AlignmentDirectional.topStart,
    this.textDirection,
    this.fit = StackFit.loose,
    this.overflow = Overflow.clip,
    List<Widget> children = const <Widget>[],
})
复制代码
  • Stack({
        this.alignment = AlignmentDirectional.topStart,
        this.textDirection,
        this.fit = StackFit.loose,
        this.overflow = Overflow.clip,
        List<Widget> children = const <Widget>[],
    })
    复制代码
    • Stack({
          this.alignment = AlignmentDirectional.topStart,
          this.textDirection,
          this.fit = StackFit.loose,
          this.overflow = Overflow.clip,
          List<Widget> children = const <Widget>[],
      })
      复制代码
      • 顶部右侧。 bottom 用于定位零件,例如水平定位,仅 left、、❓、 width 的三个属性中的两个,例如自动计算宽度(❝♿左 + 宽度) ),如果同时给出三个属性,则会出现错误消息我们发送;在垂直方向上只能指定三个属性:顶部两个属性的topbottomheight

        height

        Flutter的Stack和Positioned(层叠布局)示例讲解

        和 指定height

        ,自动计算bottomtop +
        + ❀❓ 中同时指定三个属性. 示例: 零件的特点:
        //通过ConstrainedBox来确保Stack占满屏幕
        ConstrainedBox(
          constraints: BoxConstraints.expand(),
          child: Stack(
            alignment: AlignmentDirectional.center,//指定未定位或部分定位的子组件的对齐方式
            children: <Widget>[
              Container(
                child: Text("Hello World", style:TextStyle(color: Colors.white)),
                color: Colors.blue,
              ),
              Positioned(
                left: 18.0,
                child: Text("I am Jack"),
              ),
              Positioned(
                top: 18.0,
                child: Text("Your friend"),
              ),
            ],
          ),
        ),
        复制代码

        运行效果为:Flutter的Stack和Positioned(层叠布局)示例讲解

        看图说话:

        • 因为第一个子文件组件Text("Hello♝")‷定位,而的值alignmentAlignmentDirectional.center,所以它会出现在中心。
        • 第二个潜台词组件Text("I am Jack")只指定了水平定位(left),所以没有定位,部分定位。在垂直方向上。 ,那么其垂直对齐方式将按照align定义的对齐方式进行对齐,即垂直居中。
        • 第三个潜台词组件Text(“你的朋友”)与第二个文本组件Text(“我是Jack”)❀无水平方向放置时,然后它将水平居中。 ?对话:
          • 由于未放置第二个潜文本组件,因此fit属性对其起作用,填充Stack
          • 由于Putyin子组件是堆叠在一起的,所以第一个潜台词组件被第二个潜台词组件覆盖,第三个在上面,所以可以正常显示。

          作者:赞恩

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门