Flutter层叠布局 Stack、Positioned

2023-11-12

Flutter中使用Stack和Positioned这两个组件来配合实现绝对定位。Stack允许子组件堆叠,而Positioned用于根据Stack的四个角来确定子组件的位置。

Stack

alignment:

此参数决定如何去对齐没有定位(没有使用Positioned)或部分定位的子组件

textDirection:

和Row、Wrap的textDirection功能一样,都用于确定alignment对齐的参考系

fit:

此参数用于确定没有定位的子组件如何去适应Stack的大小。StackFit.loose表示使用子组件的大小,StackFit.expand表示扩伸到Stack的大小。

overflow:

此属性决定如何显示超出Stack显示空间的子组件;值为Overflow.clip时,超出部分会被剪裁,值为Overflow.visible 时则不会。

Positioned

left、top 、right、 bottom

分别代表离Stack左、上、右、底四边的距离

width和height

用于指定需要定位元素的宽度和高度
**
Positioned的width、height用于配合left、top 、right、 bottom来定位组件
即在水平方向时,你只能指定left、right、width三个属性中的两个,如指定left和width后,right会自动算出(left+width),如果同时指定三个属性则会报错,垂直方向同理

示例

Container(
  margin: const EdgeInsets.all(20),
  child: Stack(
    alignment: Alignment.topLeft,
    children: <Widget>[
      Positioned(
        child: Text("浮生如梦"),
        left: 100,
        top: 100,
      ),

      Container(
        child: Text(
          "来也匆匆,去也匆匆",
          style: TextStyle(
            color: Colors.white,
          ),
        ),
        color: Colors.lightBlue,
      ),

      Positioned(
        child: Text("倚天屠龙记"),
        right: 0,
        bottom: 100,
      ),
    ],
  ),
  width: double.infinity,
  height: 300,
),

效果
在这里插入图片描述

Stack中添加fit: StackFit.expand,

Container(
  margin: const EdgeInsets.all(20),
  child: Stack(
    alignment: Alignment.topLeft,
    fit: StackFit.expand,//没有定位的组件会占满Stack
    children: <Widget>[
      Positioned(
        child: Text("浮生如梦"),
        left: 100,
        top: 100,
      ),

      Container(
        child: Text(
          "来也匆匆,去也匆匆",
          style: TextStyle(
            color: Colors.white,
          ),
        ),
        color: Colors.lightBlue,
      ),

      Positioned(
        child: Text("倚天屠龙记"),
        right: 0,
        bottom: 100,
      ),
    ],
  ),
  width: double.infinity,
  height: 300,
),

如图,第二个组件Container占满了Stack全部,并盖住了第一个组件,所以第一个组件不可见。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter层叠布局 Stack、Positioned 的相关文章

随机推荐

  • Unity Shader入门精要第四章:学习Shader 所需的数学基础--坐标空间

    Unity系列文章目录 文章目录 Unity系列文章目录 前言 一 4 6 1 为什么要使用这么多不同的坐标空间 二 4 6 3 顶点的坐标空间变换过程 4 6 4 模型空间 4 6 6 观察空间 4 6 7 裁剪空间 总结 法线变换 参考
  • python中index方法_Python中的index()方法使用教程

    Python中的index 方法使用教程 index 方法确定字符串str 如果起始索引beg和结束索引end在末尾给出了找到字符串或字符串的一个子串 这个方法与find 方法一样 只是如果没有找到子符趾会抛出一个异常 语法 以下是inde
  • 阿里SR Gateway:IDLE_TIMEOUT:Websocket session is idle for too long time

    阿里SR在10秒内无数据流输入 SR会自动断开 sdk本身在请求建立链接后 长时间没有发送任何数据 超过10s后 服务端会返回40000004错误信息 Gateway IDLE TIMEOUT Websocket session is id
  • C++ list 类学习笔记

    双向循环链表list list是双向循环链表 每一个元素都知道前面一个元素和后面一个元素 在STL中 list和vector一样 是两个常被使用的容器 和vector不一样的是 list不支持对元素的任意存取 list中提供的成员函数与ve
  • windows cmd命令整理

    文章目录 windows 路由表 命令行设置环境变量 windows cmd 查看文件内容 类似linux cat type file name txt cmd 切换用户 类似 linux su user name runas user u
  • vue 微信分享

    场景 一个h5界面要求点击右上角三个点后点击微信好友分享带标题和图片给好友 vue项目中 分享携带头部标题 简介和缩略图等信息 1 下载微信的 weixin js sdk npm install weixin js sdk 2 在需要分享的
  • 顺序表的逆置算法

    顺序表的逆置算法 1 逆置原理 2 算法实现 3 经典例题1 4 经典例题2 1 逆置原理 顺序表的逆置即将线性表 a1 a2 a3 an 转化为 an an 1 an 2 a2 a1 此操作在程序设计中经常使用 2 算法实现 includ
  • 第十四届蓝桥杯(第三期)模拟赛试题与题解 C++

    第十四届蓝桥杯 第三期 模拟赛试题与题解 C 试题 A 问题描述 请找到一个大于 2022 的最小数 这个数转换成十六进制之后 所有的数位 不含前导 0 都为字母 A 到 F 请将这个数的十进制形式作为答案提交 答案提交 这是一道结果填空的
  • 使用腾讯云clb实现https转发

    腾讯云clb实现https进行转发 七层反代 四层负载均衡和七层负载均衡有什么区别 四层均衡能力 是基于 IP 端口的负载均衡 七层是基于应用层信息 如 HTTP 头部 URL 等 的负载均衡 四到七层负载均衡 就是在对后台的服务器进行负载
  • SpringBoot读取配置文件的两种方式以及自定义配置文件的读取

    1 读取默认配置文件中的数据 application properties 直接使用 Value注解获取数据 2 使用Environment获取数据 防止乱码统一编码格式 注入Environment 使用getProperty获取数据 3
  • UE4 Actor生命周期 SpawnActor DestroyActor剖析

    原创文章 转载请注明出处 AActor很重要 只要是我们世界大纲列表内的物体 全部都是AActor 目录 第一部分 从编辑器点击Play开始分析World里面全部的Actor的Spawn流程 分析到调用BeginPlay结束 1 gt 下面
  • Effective java 总结10-并发

    Effective java 总结10 并发 第78条 同步访问共享的可变数据 Synchronized 可以保证在同一时刻 只有一个线程可以执行某一个方法 或者某一个代码块 同步可以阻止一个线程看到对象处于不一致的状态中 还可以保证进入同
  • mysql 5.7的jdbc驱动_高版本MySQL(5.7,5.8)的JDBC连接新问题

    在使用JDBC连接访问MySQL时一般要使用对应版本的驱动 比如我使用了8 0 11版本的MySQL 对应驱动的Maven描述为 1 2 mysql 3 mysql connector java 4 8 0 11 5 然后遇到了驱动问题 S
  • Python 自动化处理 Yaml 文件

    1 Yaml 是什么 Yaml是一种简洁的非标记语言 Yaml是一个可读性高 用来表达数据序列化的格式 Yaml以数据为中心 使用空白 缩进 分行组织数据 从而使得表示更加简洁 Yaml特别适合用来表达或编辑数据结构 各种配置文件 文件大纲
  • Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted

    一般为数组越界 查看一下数组大小
  • 算力军备竞赛白热化 “卖铲人”联想集团竞争力如何?

    继微软通过OpenAI推出GPT系列 谷歌推出Bard和PaLM E2之后 国内AI大模型也呈百家争鸣态势 年初至今 国内科技巨头几乎都发布了自研AI大模型产品 AI竞赛全面升级的背后 是全球科技巨头们对算力的争夺 作为算力载体的AI服务器
  • 使用Docker+Jenkins+Gitee自动化部署SpringBoot项目

    目录 搭建基础环境 1 使用Docker Compose搭建基础环境 2 搭建项目仓库环境 创建Dockerfile文件 2022 12 15更新 3 配置Jenkins 3 1 初始化Jenkins 3 2 安装核心插件 3 3 全局工具
  • 学习笔记1——常用的注意力机制(即插即用)

    在目标检测网络里加注意力机制已经是很常见的了 顾名思义 注意力机制是指在全局图像中获得重点关注的目标 常用的注意力机制有SE CA ECA CBAM GAM NAM等 1 SE模块 论文 https arxiv org pdf 1709 0
  • 【论文阅读】LASOR: Learning Accurate 3D Human Pose and Shape Via Synthetic Occlusion-Aware Data and Neural

    1 环境配置上 1 1 报错 1 1 1 opencv cv2 error OpenCV 4 6 0 error 5 Bad argument in function circle Overload resolution failed Ca
  • Flutter层叠布局 Stack、Positioned

    Flutter中使用Stack和Positioned这两个组件来配合实现绝对定位 Stack允许子组件堆叠 而Positioned用于根据Stack的四个角来确定子组件的位置 Stack alignment 此参数决定如何去对齐没有定位 没