Flutter组件--重叠布局/相对布局(Stack,Positioned组件)

1.Flutter Stack组件

Stack表示堆的意思,我们可以用Stack或者Stack结合Align或者Stack结合 Positiond来实现页面的定位布局

属性

说明

alignment

配置所有子元素的显示位置

children

子组件

只使用Stack组件的情况下,所有的组件都是重叠在一起的,具体见下:


class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return Stack(
      children: [
        Container(
          height: 400,
          width: 300,
          color: Colors.red,
        ),
        Container(
          height: 200,
          width: 200,
          color: Colors.yellow,
        ),
        const Text("我们是重叠在一起的")
      ],
    );
  }
}

2.Positioned相对定位组件 

Stack组件中结合Positioned组件也可以控制每个子元素的显示位置.

注意事项:

在使用Positioned组件的时候,必须在Positioned中为该容器设置宽度和高度.如果Positioned设置了宽度和高度,那么子组件设置宽高以后将无效.

属性说明

top

子元素距离顶部的距离

bottom

子元素距离底部的距离

left

子元素距离左侧距离

right

子元素距离右侧距离

child

子组件

width

组件的高度 (注意:宽度和高度必须是固定值,没法使用double.infifinity),只能使用final size =MediaQuery.of(context).size; 方法

height

子组件的高度

示例:

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return Container(
      width: 300,
      height: 400,
      color: Colors.red,
      child: Stack(
        children: [
          //Positioned的组件是相对于这个Stack组件外层这个组件的.如果这个Stack组件写到我们这个根组件里面,那它这个时候就相对于我们整个屏幕,如果这个Stack组件配置到我们Container组件里面的话,那这个时候就相对于我们Container组件的位置进行定位的.
          Positioned(
            left: 0,//left和bottom是配置黄色Container相对于红色Container的位置
            bottom: 0,
            child: Container(
            height: 200,
            width: 200,
            color: Colors.yellow,
          )),
          const Text("你好flutter")//如果需要设置Text组件的相对位置,也需要在外层包裹一层Positioned组件.
        ],
      ),
    );
  }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值