Flutter Stack组件

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

Alignment(对齐)类是用于表示相对于父容器的对齐方式的;

Alignment 类的常见用法:
  1. Alignment.topLeft: 左上对齐
  2. Alignment.topCenter: 居中顶部对齐
  3. Alignment.topRight: 右上对齐
  4. Alignment.centerLeft: 居中左侧对齐
  5. Alignment.center: 居中对齐 (默认值)
  6. Alignment.centerRight: 居中右侧对齐
  7. Alignment.bottomLeft: 左下对齐
  8. Alignment.bottomCenter: 居中底部对齐
  9. Alignment.bottomRight: 右下对齐

Alignment 还可以使用偏移量进行微调。例如:

  1. Alignment(-1.0, -1.0): 左上角对齐
  2. Alignment(1.0, 0.0): 右侧居中对齐
  3. Alignment(0.0, 0.5): 父容器顶部中心对齐
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return Stack(
alignment: Alignment.center, //子元素显示的位置
children: [
Container(
height: 150,
width: 150,
color: Colors.red,
),
Text("你好")
],);
}}

Flutter Stack Align

Align 组件可以调整子组件的位置 , Stack组件中结合Align组件也可以控制每个子元素的显示位置
1.Align结合Container的使用
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return Container(
// alignment: Alignment.center,
height: 150,
width: 150,
color: Colors.red,
child: const Align( // center是Align的子主键
alignment: Alignment.center,
child: Text("你好"),)
);
}
}
2.Align结合Alignment 参数
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return Container(
// alignment: Alignment.center,
height: 150,
width: 150,
color: Colors.red,
child: const Align( // center是Align的子主键
alignment: Alignment(0,1), //(Alignment.x*childWidth/2+childWidth/2, Alignment.y*childHeight/2+childHeight/2)
child: Text("你好"),)
);
}
}
Alignment 可以通过其坐标转换公式将其坐标转为子元素的具体偏移坐标: 
(Alignment.x*childWidth/2+childWidth/2, Alignment.y*childHeight/2+childHeight/2) 
其中 childWidth 为子元素的宽度, childHeight 为子元素高度
3.Align结合Alignment 参数
Center 继承自 Align ,它比 Align 只少了一个 alignment 参数;由于 Align 的构造函数中
alignment 值为 Alignment.center ,所以,我们可以认为 Center 组件其实是对齐方式确定
4.Align结合Stack组件
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return Container(
width: 300,
height: 200,
color: Colors.red,
child: const Stack(
children: [
Align(
alignment: Alignment.topLeft,
child: Text("收藏"),
),
Align(
alignment: Alignment.topRight,
child: Text("购买"),
)
],
),
);
}
}

Flutter Stack Positioned

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

Stack 结合Positioned参数
class HomePage extends StatelessWidget {
const HomePage({super.key}); @override
Widget build(BuildContext context) {
return Container(
height: 400,
width: 400,
color: Colors.yellow,
child: Stack( //注意:相对于外部容器进行定位 如果没有外部容器就相对于整个屏幕进行定位
children: [
Positioned(
left: 0,
width: 50,//配置子元素的宽度 无法使用double.infinity
// right: 0,
bottom: 0,
child: Container(
height: 300,
width: 300,
color: Colors.red,
),),
const Positioned(right: 0, top: 190, child: Text("你好吗"))
],),
);
}}

11、层叠布局(Stack、Align、 Positioned)的更多相关文章

  1. Flutter 布局类组件:层叠布局(Stack和Positioned)

    前言 层叠布局,即子组件可以根据距父容器四个角的位置来确定自身的位置.绝对定位运行子组件堆叠起来,即按照代码中声明的顺序. Flutter中使用Stack和Positioned这两个组件来配合实现绝对 ...

  2. 11Flutter页面布局 Stack层叠组件 Stack与Align Stack与Positioned实现定位布局

    /* Flutter 页面布局 Stack层叠组件: Stack与Align Stack与Positioned实现定位布局: Flutter Stack组件: Stack表示堆得意思,我们可以用Sta ...

  3. 定位布局 Stack 层叠组件 Stack 与 Align Stack 与 Positioned 实现

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

  4. 页面布局 Stack 层叠组件 Stack 与 Align Stack 与 Positioned 实现定位布局

    一.Flutter Stack 组件 Stack 表示堆的意思,我们可以用 Stack 或者 Stack 结合 Align 或者 Stack 结合 Positiond 来实现页面的定位布局 属性 说明 ...

  5. 技术胖Flutter第三季-16Stack层叠布局

    16Stack层叠布局 在上面声明一个变量Stack里面包含两个元素,第一个 是CircleAvater第二个子对象是Container 效果 把文字房子啊中下的位置: 我们需要对齐属性 包含了x轴和 ...

  6. Flutter 页面布局 Stack层叠组件

    Stack 表示堆的意思,我们可以用 Stack 或者 Stack 结合 Align 或者 Stack 结合 Positiond 来实现页面的定位布局 属性 说明 alignment 配置所有子元素的 ...

  7. IE 11 flex布局兼容性问题 ---- 不支持min-height 和flex:1

    由于最近项目要嵌入其它平台,所以要做IE11 的兼容,那就用IE11打开网页看一看,一看吓一跳,页脚直接到了页眉的下面,并把主要内容覆盖了,也就是stick footer 布局失效了,我写了一个简易的 ...

  8. Android学习笔记(11):线性布局LinearLayout

    线性布局LinearLayout是指在横向或是竖向一个接一个地排列.当排列的组件超出屏幕后,超出的组件将不会再显示出来. LinearLayout支持的XML属性和相应方法如表所看到的: Attrib ...

  9. 《Flutter实战》开源电子书

    <Flutter实战>开源电子书 <Flutter实战> 开源了,本书为 Flutter中文网开源电子书项目,本书系统介绍了Flutter技术的各个方面,本书属于原创书籍(并非 ...

  10. Flutter开发之Widget布局和页面导航

    一.水平布局Row Row控件可以分为非灵活排列和灵活排列两种,灵活的可以在外边加入Expanded使用 两者混用: import 'package:flutter/material.dart'; v ...

随机推荐

  1. Factors 分解质因数

    package com.yourself.yours; import java.util.Scanner; /** ****************************************** ...

  2. DDMS查看Threads情况

    有时候程序运行出现死锁或者信号量卡死是很纠结的问题,单看代码很难分析定位问题,这时候可以借助DDMS来查看threads的运行情况,一目了然. 手机连接上USB,确保adb连通,然后启动Eclipse ...

  3. Java 集合的排序(正序倒序)、查找元素的下边、最大值、最小值

    Java 集合的排序(正序倒序).查找元素的下边.最大值.最小值 集合的排序 集合查找对应元素的下标 集合的最大最小值 集合的排序 使用Collections.sort()排序,默认是递增.加上比较器 ...

  4. 每天5分钟复习OpenStack(五)CPU虚拟化

    KVM 虚拟化之CPU 虚拟化存在是为了更高效的利用物理机的资源,而虚拟机技术主要是针对三大组件,分别是CPU虚拟化.存储虚拟化.网络虚拟化.下面我们分别介绍下三大组件的常用知识. CPU 虚拟化 1 ...

  5. JUC并发编程学习笔记(九)阻塞队列

    阻塞队列 阻塞 队列 队列的特性:FIFO(fist inpupt fist output)先进先出 不得不阻塞的情况 什么情况下会使用阻塞队列:多线程并发处理.线程池 学会使用队列 添加.移除 四组 ...

  6. easyupload

    打开界面就是一个文件上传 的界面 然后在bp试了很多种方法都没有成功,还是看了wp 这里需要利用到.use.ini那为什么不用.heaccess?好像这种方法被过滤了,当时我用的时候没有成功 这里的话 ...

  7. 四载磨砺,一群青年“识瘤者”以AI助力医疗创新

    ​​本文分享自华为云社区<[先锋开发者云上说]四载磨砺,一群青年"识瘤者"以AI助力医疗创新>,作者:Gauss松鼠会小助手2 . 一群青年"识瘤者" ...

  8. Vivado生成bitstream时报错[Opt 31-67] Problem: A LUT3 cell in the design is missing a connection on input pin I1, which is used by the LUT equation

    这个原因主要是因为有一个引脚没有用到,解决方法. 1.打开Schematic. 2.根据提示的模块去找,比如说我的报错. [Opt 31-67] Problem: A LUT3 cell in the ...

  9. 2021 ICPC济南 J Determinant

    题意就是给定一个矩阵,然后给出他的行列式的绝对值,这个值是精确的,然后让我们判断行列式的正负. 思路来源:一个Acmer 首先做这个题要明白一个性质才可以做,一个数和它的相反数对一个奇数的取模一定不同 ...

  10. 30. 干货系列从零用Rust编写正反向代理,HTTP的组装之旅(中间件)

    wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代 ...