9、线性布局(Row和Column)
自定义的IconContainer
void main() {
runApp(MaterialApp(
theme: ThemeData(primarySwatch: Colors.yellow),
home: Scaffold(
appBar: AppBar(title: const Text("这是导航栏")),
body: MyApp(),
)));
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return IconContainer(Icons.ac_unit,color: Colors.yellow);
}
}
//自定义的IconContainer
class IconContainer extends StatelessWidget {
Color color;
IconData icon;
// IconContainer(this.icon ,{super.key,required this.color}); // 与下方效果一样
// IconContainer(this.icon ,{Key? key,required this.color}) : super(key: key);
IconContainer(this.icon ,{Key? key, this.color=Colors.red}) : super(key: key); //可传入颜色(也可以不用传入颜色)
@override
Widget build(BuildContext context) {
return Container(
alignment: Alignment.center, //内容居中
color: color,
height: 200,
width: 200,
child: Icon(icon,size: 50,),
);
}
}
mainAxisAlignment 用于指定子组件在主轴(水平方向)上的对齐方式
MainAxisAlignment.start(默认值):子组件将在主轴的起始位置对齐。
MainAxisAlignment.end:子组件将在主轴的末尾位置对齐。
MainAxisAlignment.center:子组件将在主轴的中心位置对齐。
MainAxisAlignment.spaceBetween:子组件将会均匀地分布在主轴上,首个和最后一个子组件分别与 Row 的起始和末尾位置对齐。
MainAxisAlignment.spaceAround:子组件将会均匀地分布在主轴上,子组件之间以及首个和最后一个子组件与 Row 的边界之间有相等的间距。
MainAxisAlignment.spaceEvenly:子组件将会均匀地分布在主轴上,子组件之间和首个、最后一个子组件与 Row 的边界之间的间距都相等。
MainAxisAlignment.spaceEvenly:子组件将会均匀地分布在主轴上,子组件之间和首个、最后一个子组件与 Row 的边界之间的间距都相等。
crossAxisAlignment 用于指定子组件在交叉轴(垂直方向)上的对齐方式(要有父容器)
CrossAxisAlignment.start:子组件将在交叉轴的起始位置对齐。
CrossAxisAlignment.end:子组件将在交叉轴的末尾位置对齐。
CrossAxisAlignment.center(默认值):子组件将在交叉轴的中心位置对齐。
CrossAxisAlignment.stretch:在交叉轴上拉伸子组件以匹配父容器的高度。
CrossAxisAlignment.baseline:子组件将使用 textDecorationStyle 属性构建一个水平基线对齐。
Row 水平布局组件
class MyRow extends StatelessWidget {
const MyRow({super.key}); @override
Widget build(BuildContext context) {
return Container(
width: double.infinity, //无穷的
height: double.infinity,
color: Color.fromARGB(255, 7, 189, 158),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, //X轴
crossAxisAlignment:CrossAxisAlignment.center, //相对与Container(父盒子) Y轴
children: [
IconContainer(Icons.ac_unit,color: Colors.yellow), //自定义的方法
IconContainer(Icons.home_max,color: Color.fromARGB(255, 226, 12, 47)),
IconContainer(Icons.ac_unit,color: Color.fromARGB(255, 9, 31, 155)),
],
),
);
}
}
Column垂直布局组件
class MyColumn extends StatelessWidget {
// const MyColumn({super.key});
const MyColumn({Key? key}) : super(key: key); @override
Widget build(BuildContext context) {
return Container(
width: double.infinity, //无穷的
height: double.infinity,
color: Color.fromARGB(255, 7, 189, 158),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween, // Y轴
crossAxisAlignment:CrossAxisAlignment.end, //相对与Container X轴
children: [
IconContainer(Icons.ac_unit,color: Colors.yellow),
IconContainer(Icons.home_max,color: Color.fromARGB(255, 226, 12, 47)),
IconContainer(Icons.ac_unit,color: Color.fromARGB(255, 9, 31, 155)),
],
),
);
}
}
double.infifinity 和double.maxFinite
我想成为我的父母所允许的最大的(double.infinity)
一些小部件允许他们的孩子像他们想要的那样大。
9、线性布局(Row和Column)的更多相关文章
- Flutter 布局类组件:线性布局(Row和Column)
前言 所谓线性布局,即指沿水平或垂直方向排布子组件.Flutter中通过Row和Column来实现线性布局,并且它们都继承自弹性布局(Flex). 接口描述 Row({ Key key, // 表示子 ...
- 12.Quick QML-QML 布局(Row、Column、Grid、Flow和嵌套布局) 、Repeater对象
1.Row布局 Row中的item可以不需要使用anchors布局,就能通过行的形式进行布局. 并且item可以使用Positioner附加属性来访问有关其在Row中的位置及其他信息. 示例如下所示, ...
- Flutter 布局(七)- Row、Column详解
本文主要介绍Flutter布局中的Row.Column控件,详细介绍了其布局行为以及使用场景,并对源码进行了分析. 1. Row A widget that displays its children ...
- 从头学Android之Android布局管理:LinerLayout线性布局
LinerLayout线性布局: 这种布局方式是指在这个里面的控件元素显线性,我们可以通过setOrientation(int orientation)来指定线性布局的显示方式,其值有:HORIZON ...
- Android 线性布局(LinearLayout)相关官方文档 - 指南部分
Android 线性布局(LinearLayout)相关官方文档 - 指南部分 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用 ...
- Android-RelativeLayout(相对布局)、LinearLayout(线性布局)
RelativeLayout(相对布局):按照各子元素之间的位置关系完成布局. 定位:android:layout_above="@id/xxx" --将控件置于给定ID控件之上 ...
- Android-LinearLayout(线性布局)
布局:Android为我们提供了一个View和ViewGroup子类的集合.ViewGroup类是View的子类,也被称为Layout布局,它提供了流式布局.线性布局等多种布局方式.View是绘制在屏 ...
- android—-线性布局
android五大布局之线性布局. 1.线性布局的特点:各个子元素彼此连接,中间不留空白 而今天我们要讲解的就是第一个布局,LinearLayout(线性布局),我们屏幕适配的使用 用的比较多的就是L ...
- android学习之线性布局
效图如下 移通152余继彪 该布局使用了线性布局完成 父布局为线性布局,黄色和灰色部分为水平的线性布局,剩余50%部分为水平线性布局,该布局中包含了两个垂直的线性布局分别占了三分之1和三分之二
- android开发------编写用户界面之线性布局
一个好的应用程序离不开人性化的用户界面.在学习其他东西之前.理应先学习编写程序的布局(外观) 今天,我们就来学习android的UI布局----LinearLayout. LinearLayout,即 ...
随机推荐
- 2023.09.29 入门级 J2 模拟赛 赛后总结(尝试第一篇总结)
T1:变换(change) 一道大水题. 赛场上想都没想就切掉了 不难发现,转换的过程只和a 和b 的二进制位有关,且不同二进制位之间无关.我们可以将a 和b 转化为二进制表示,每一位分别判断,如果这 ...
- Docker CE
3. 安装Docker CE Docker有两个分支版本:Docker CE和Docker EE,即社区版和企业版.本教程基于CentOS 7安装Docker CE. 执行如下命令,安装Docker的 ...
- Makefile 入门教程
Makefile 是一个非常强大的构建自动化工具,用于管理项目的编译.链接和其他构建任务.以下是一个详细的 Makefile 使用文档,包括基本概念.语法.示例和常见任务. 1. 基本概念 目标 (T ...
- CF1534C
题目简化和分析: 涉及算法:并查集. 为什么要使用并查集: 因为交换只能是列交换,并且保证不与别的重复 我们通过观察题目发现,某些列之间互为限制关系 即如果某列序列排序方式固定,则被限制的列也为固定的 ...
- [SWPUCTF 2021 新生赛]老鼠走迷宫(详细版
附件下载 https://wwvc.lanzouj.com/iYLez1br84jg 解题思路 用pyinstxtrator解析exe 重点:将无后缀的5先修改后缀为pyc,然后随便找一个pyc文件补 ...
- MMKV源码解读与理解
概述 通过 mmap 技术实现的高性能通用 key-value 组件.同时选用 protobuf 协议,进一步压缩数据存储. 标准 protobuf 不提供增量更新的能力,每次写入都必须全量写入.考虑 ...
- MIT协议原文及中文翻译
MIT协议原文及翻译 参考链接 原文: Copyright ( C ) Permission is hereby granted, free of charge, to any person obta ...
- redis主从同步及redis哨兵机制
1.主从和哨兵的作用: 角色 作用 主从 1.(提供)数据副本:多一份数据副本,保证redis高可用 2. 扩展(读)性能:如容量.QPS等 哨兵 1.监控: 监控redis主库及从库运行状态: 2 ...
- CF85B [Embassy Queue]
Problem 题目简述 有 \(n\) 个人分别在 \(c_i\) 的时刻来,他们都要在 \(k_1\),\(k_2\) 和 \(k_3\) 窗口干不同的事,当有后面一人也排在在同一窗口时,必须等待 ...
- GitHub Actions 入门指南
前言 GitHub Actions 可以构建一组自动化的工作流程,并提供了拉取请求.合并分支等事件来触发他们.一般成熟的开源项目会在每个版本发布时提供 releases ,它就是通过 Actions ...