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. 记一次基于 PowerShell 的 Git 自动化部署 Java 多服务实践

    前言 有这么一个自动化部署的需求,凑巧 git 还直接建立在测试服务器上,部署后可以直接在测试服务器上演示 步骤 建立 Git 仓库 与一般的 Git 部署一样,区别是需要添加 --bare 开关,这 ...

  2. DNS 服务 docker-bind 的部署使用

    前言 前面使用 nginx 代理转发了几个域名到服务器,但是每次添加一个域名都需要在客户端添加一行 hosts 文件,无疑是繁琐的,其中也提到可以使用 DNS 来实现自动解析域名 到指定服务器的功能, ...

  3. 代码安全之代码混淆及加固(Android)🔒

    ​ 代码安全之代码混淆及加固(Android) 目录 代码安全之代码混淆及加固(Android) 摘要 引言 正文 代码混淆 代码加固 总结 参考资料 摘要 本文将介绍如何通过代码混淆和加固来保护An ...

  4. CSS 尺寸单位概述

    在本文中,我们将探讨 CSS 尺寸单位的四大类别.我们将了解这些尺寸单位的用途.它们的最佳工作原理,以及如何在每种情况下选择最佳尺寸单位,从而在各种媒体和设备尺寸下优化我们的布局. 关于 CSS 尺寸 ...

  5. 在.net中使用AutoMapper进行对象映射,对象相互转,简单方便

    AutoMapper是一种对象映射工具,它可以帮助我们将不同类型的数据对象之间进行相互转换.在.NET中,我们可以使用AutoMapper库来简化数据对象之间的映射操作,从而提高代码的可读性和可维护性 ...

  6. 【题解】HD2016.X1,HD2016.X3,HD2016.X4,HD2016.X5

    [HD2016.X1] 价钱统计 题目描述 夏天到了,超市里摆满了各种各样的应季水果.现在知道:西瓜的价钱是每斤 1.2 元:桃子的价钱是每斤 3.5 元:葡萄的价钱是每斤 4.5 元:苹果的价钱是每 ...

  7. C/C++ Zlib库封装MyZip压缩类

    Zlib是一个开源的数据压缩库,提供了一种通用的数据压缩和解压缩算法.它最初由Jean-Loup Gailly和Mark Adler开发,旨在成为一个高效.轻量级的压缩库,其被广泛应用于许多领域,包括 ...

  8. 2022 RedisDays 内容揭秘

    上个月,Redis举办了3场线上会议,分别介绍了即将正式发布的Redis 7中包括的重要更新的内容,还有Redis完全重写的RedisJSON 2.0模块,和新发布的Redis Stack模块.除此之 ...

  9. [CF1824D] LuoTianyi and the Function

    题目描述 LuoTianyi gives you an array $ a $ of $ n $ integers and the index begins from $ 1 $ . Define $ ...

  10. [ABC280G] Do Use Hexagon Grid 2

    Problem Statement A hexagonal cell is represented as $(i,j)$ with two integers $i$ and $j$. Cell $(i ...