Flutter中Stack层叠组件以及与Align、Positioned组件实现定位布局
1. Stack 组件
Stack 表示堆的意思,用此组件修饰的子组件会“堆”在一起。
常见属性:
1. alignment 对齐方式;
2. children 子组件;
代码示例:
import 'package:flutter/material.dart';void main(){runApp(MyApp());
}// 抽离成一个单独的组件
class MyApp extends StatelessWidget{@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(// 导航条appBar:AppBar(title:Text('Flutter App')),// 主体body:HomeContent(),),// 主题theme: ThemeData(primarySwatch:Colors.yellow),);}
}// 利用Stack的alignment实现定位
class HomeContent extends StatelessWidget{@overrideWidget build(BuildContext context) {// Stack会将里面的子组件堆叠到一起return Center(child:Stack(// 直接指定方位,共9个// alignment: Alignment.center,// 用数值来表示方位,x和y的值位于-1到1之间// 0,0表示居中显示alignment: Alignment(1,0),children: <Widget>[Container(height:400,width:300,color:Colors.red),Text("这是一个文本",style:TextStyle(fontSize: 20.0,color:Colors.green)), ],));}
}
效果图如下:
2. Stack与Align实现定位
Align组件专用于修饰子组件的对齐方式。
常见属性:
1. alignment 对齐方式;
2. children 子组件;
代码示例:
import 'package:flutter/material.dart';void main(){runApp(MyApp());
}// 抽离成一个单独的组件
class MyApp extends StatelessWidget{@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(// 导航条appBar:AppBar(title:Text('Flutter App')),// 主体body:HomeContent(),),// 主题theme: ThemeData(primarySwatch:Colors.yellow),);}
}// 利用Stack与Align实现多个子组件的定位
class HomeContent extends StatelessWidget{@overrideWidget build(BuildContext context) {return Center(child:Container(height:400,width:300,color:Colors.red,child:Stack(children: <Widget>[Align(alignment:Alignment.topLeft,child:Icon(Icons.home,size:40,color:Colors.blue)),Align(// 对齐方式也可以使用数值表示alignment: Alignment(0,-1),child:Icon(Icons.search,size:40,color:Colors.white)),Align(alignment: Alignment.topRight,child:Icon(Icons.inbox,size:40,color:Colors.black))],)));}
}
效果图如下:
3. Stack与Postioned实现定位
Positioned组件用于对子组件进行定位。
常见属性:
1. top 子元素距离顶部的距离;
2. bottom 子元素距离底部的距离;
3. left 子元素距离左侧距离;
4. right 子元素距离右侧距离;
5. child 子组件;
代码示例:
import 'package:flutter/material.dart';void main(){runApp(MyApp());
}// 抽离成一个单独的组件
class MyApp extends StatelessWidget{@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(// 导航条appBar:AppBar(title:Text('Flutter App')),// 主体body:HomeContent(),),// 主题theme: ThemeData(primarySwatch:Colors.yellow),);}
}// 利用Stack与Positioned实现多个子组件的定位
class HomeContent extends StatelessWidget{@overrideWidget build(BuildContext context) {return Center(child:Container(height:400,width:300,color:Colors.red,child:Stack(children: <Widget>[// 位置组件可以定位4个方向的// 一般用两个方位即可Positioned(bottom:0,left:0,child:Icon(Icons.home,size:40,color:Colors.blue)),Positioned(bottom:0,left:130,child:Icon(Icons.search,size:40,color:Colors.white)),Positioned(bottom:0,right:0,child:Icon(Icons.inbox,size:40,color:Colors.black))],)));}
}
效果图如下:
Flutter中Stack层叠组件以及与Align、Positioned组件实现定位布局相关推荐
- Flutter中Padding、Row 、Column 、Expanded 组件详解
1. Paddiing 组件 在 html 中常见的布局标签都可以使用 padding 属性,但是 Flutter 中很多 Widget 是没有 padding 属 性,这个时候我们可以用 Paddi ...
- Flutter中PlatformView组件无法刷新的问题
在Flutter中我们经常使用PlatformView来进行原生组件的绘制,但是倘若使用setState()进行页面刷新时候,虽然页面刷新了,但是PlatformView还是使用的之前的组件.这种情况 ...
- Flutter第一部分(UI)第二篇:在Flutter中构建布局
前言:Flutter系列的文章我应该会持续更新至少一个月左右,从User Interface(UI)到数据相关(文件.数据库.网络)再到Flutter进阶(平台特定代码编写.测试.插件开发等),欢迎感 ...
- Flutter中那些你需要知道的文本知识!
通过阅读本文,您将了解到 文本的组成部分: Flutter对于文本&段落是如何绘制的: 明白Flutter Text 背后的逻辑: 在业务中碰到一些文本显示的问题时,知道从哪些地方去尝试修改. ...
- Flutter组件--重叠布局/相对布局(Stack,Positioned组件)
1.Flutter Stack组件 Stack表示堆的意思,我们可以用Stack或者Stack结合Align或者Stack结合 Positiond来实现页面的定位布局 属性 说明 alignment ...
- 【Flutter】Flutter 照片墙 ( Center 组件 | Wrap 组件 | ClipRRect 组件 | Stack 组件 | Positioned 组件 | 按钮组合组件 )
文章目录 一.Flutter 组件回顾 二.Center 组件 三.Wrap 组件 四.ClipRRect 组件 五.Stack 组件与 Positioned 组件 六.按钮组件组合 七.完整代码示例 ...
- Flutter Stack Align Positioned
Flutter Stack 层叠组件 在介绍Stack 层叠组件时,顺便带上Align**和Positioned**,以及组合使用 参数详解 Stack 属性 说明 alignment 布局定位 默认 ...
- 【Flutter】Flutter 布局组件 ( FractionallySizedBox 组件 | Stack 布局组件 | Positioned 组件 )
文章目录 一.FractionallySizedBox 组件 二.Stack 布局组件 三.Positioned 组件 四. 完整代码示例 五. 相关资源 一.FractionallySizedBox ...
- 在Flutter中嵌入Native组件的正确姿势
引言 在漫长的从Native向Flutter过渡的混合工程时期,要想平滑地过渡,在Flutter中使用Native中较为完善的控件会是一个很好的选择.本文希望向大家介绍AndroidView的使用方式 ...
最新文章
- Python 列表 insert() 方法
- 利用Landsat8 进行利用土地分类
- import javax.servlet 出错(真的很管用)
- SHELL学习 续2
- 从零开始学 Web 之 BOM(四)client系列
- js代码赋值触发select控件的onchange事件
- 使用tesseract-ocr破解网站验证码
- 如何快速编写并运行Tiny模板语言?
- session 的 源码
- git pull和push整理和归纳
- D3 Collection
- 1.0-并发编程-进程和线程简介
- Max Script|控制摄像机
- Fleck说明文档翻译
- 快递100接口使用整理
- 推荐一款Mac上好用的Markdown编辑器
- OOA/OOD/OOP(了解)
- 湖北省三甲复审评审资料(2011年版第七章--信息科相关)
- css如何利用transparent属性设置透明度?transparent属性绘制各种三角形
- Glide无法使用任何Transform/Gilde使用Transform不生效问题说明以及Gilde加载任意角圆角实现
热门文章
- android 前摄屏幕补光,前后800万摄像头/配前置补光灯_富可视 M2_手机Android频道-中关村在线...
- 【Axure教程】在PPT里演示原型模板
- 剖析AWS CodeDeploy
- “0xffffffff”转为十进制数
- 论文阅读“Graph Contrastive Clustering”(ICCV2021)
- 布道微服务_02微服务架构解析
- 【JZOJ 杂题选讲】北大集训2019 n门问题
- dw中html怎么创建css,Dreamweaver创建新的CSS规则
- [Pandas] 类型转换astype()
- android仿微信相册的效果