自定义的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 用于指定子组件在主轴(水平方向)上的对齐方式
  1. MainAxisAlignment.start(默认值):子组件将在主轴的起始位置对齐。

  2. MainAxisAlignment.end:子组件将在主轴的末尾位置对齐。

  3. MainAxisAlignment.center:子组件将在主轴的中心位置对齐。

  4. MainAxisAlignment.spaceBetween:子组件将会均匀地分布在主轴上,首个和最后一个子组件分别与 Row 的起始和末尾位置对齐。

  5. MainAxisAlignment.spaceAround:子组件将会均匀地分布在主轴上,子组件之间以及首个和最后一个子组件与 Row 的边界之间有相等的间距。

  6. MainAxisAlignment.spaceEvenly:子组件将会均匀地分布在主轴上,子组件之间和首个、最后一个子组件与 Row 的边界之间的间距都相等。

  7. MainAxisAlignment.spaceEvenly:子组件将会均匀地分布在主轴上,子组件之间和首个、最后一个子组件与 Row 的边界之间的间距都相等。

crossAxisAlignment 用于指定子组件在交叉轴(垂直方向)上的对齐方式(要有父容器)
  1. CrossAxisAlignment.start:子组件将在交叉轴的起始位置对齐。

  2. CrossAxisAlignment.end:子组件将在交叉轴的末尾位置对齐。

  3. CrossAxisAlignment.center(默认值):子组件将在交叉轴的中心位置对齐。

  4. CrossAxisAlignment.stretch:在交叉轴上拉伸子组件以匹配父容器的高度。

  5. 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.infifinity 和double.maxFinite可以让当前元素的width或者height达到父元素的尺寸;
区别:

我想成为我的父母所允许的最大的(double.infinity)

一些小部件允许他们的孩子像他们想要的那样大。

9、线性布局(Row和Column)的更多相关文章

  1. Flutter 布局类组件:线性布局(Row和Column)

    前言 所谓线性布局,即指沿水平或垂直方向排布子组件.Flutter中通过Row和Column来实现线性布局,并且它们都继承自弹性布局(Flex). 接口描述 Row({ Key key, // 表示子 ...

  2. 12.Quick QML-QML 布局(Row、Column、Grid、Flow和嵌套布局) 、Repeater对象

    1.Row布局 Row中的item可以不需要使用anchors布局,就能通过行的形式进行布局. 并且item可以使用Positioner附加属性来访问有关其在Row中的位置及其他信息. 示例如下所示, ...

  3. Flutter 布局(七)- Row、Column详解

    本文主要介绍Flutter布局中的Row.Column控件,详细介绍了其布局行为以及使用场景,并对源码进行了分析. 1. Row A widget that displays its children ...

  4. 从头学Android之Android布局管理:LinerLayout线性布局

    LinerLayout线性布局: 这种布局方式是指在这个里面的控件元素显线性,我们可以通过setOrientation(int orientation)来指定线性布局的显示方式,其值有:HORIZON ...

  5. Android 线性布局(LinearLayout)相关官方文档 - 指南部分

    Android 线性布局(LinearLayout)相关官方文档 - 指南部分 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用 ...

  6. Android-RelativeLayout(相对布局)、LinearLayout(线性布局)

    RelativeLayout(相对布局):按照各子元素之间的位置关系完成布局. 定位:android:layout_above="@id/xxx" --将控件置于给定ID控件之上 ...

  7. Android-LinearLayout(线性布局)

    布局:Android为我们提供了一个View和ViewGroup子类的集合.ViewGroup类是View的子类,也被称为Layout布局,它提供了流式布局.线性布局等多种布局方式.View是绘制在屏 ...

  8. android—-线性布局

    android五大布局之线性布局. 1.线性布局的特点:各个子元素彼此连接,中间不留空白 而今天我们要讲解的就是第一个布局,LinearLayout(线性布局),我们屏幕适配的使用 用的比较多的就是L ...

  9. android学习之线性布局

    效图如下 移通152余继彪 该布局使用了线性布局完成 父布局为线性布局,黄色和灰色部分为水平的线性布局,剩余50%部分为水平线性布局,该布局中包含了两个垂直的线性布局分别占了三分之1和三分之二

  10. android开发------编写用户界面之线性布局

    一个好的应用程序离不开人性化的用户界面.在学习其他东西之前.理应先学习编写程序的布局(外观) 今天,我们就来学习android的UI布局----LinearLayout. LinearLayout,即 ...

随机推荐

  1. QQ机器人整理合集

    QQ机器人有什么用呢? QQ机器人可以实现包括自动回复.定时推送.发送图片QQ机器人,营销圈用的比较多,可以开发各种自动功能等等.用其制作的QQ机器人程序 机器人框架+插件 小栗子机器人 官网:htt ...

  2. ptaCCF

    返回首页 English站点地图联系我们常见问题CCF招聘登录 加入CCF 计算机 CCF简介   中国计算机学会(CCF)成立于1962年,全国性学会,独立社团法人,中国科学技术协会成员. CCF是 ...

  3. np.random.beta

    numpy.random.beta(a,b,size=None) 从β分布中提取样本.β分布是狄里克莱分布的一个特例,与伽马分布有关. 在这里我们将参数(3个参数)设置为32 32 3 参数1:32次 ...

  4. 使用go语言开发hive导出工具

    前言 新版 hive 提供了 beeline 工具,可以执行SQL并导出数据,不过操作还是有点复杂的,团队里有些同学不会Linux的基本操作,所以我花了亿点点时间写了个交互式的命令行工具方便使用. 效 ...

  5. nginx配置解决跨域访问

    场景:前后的分离项目,前端vue框架,打包后放在Tomcat里访问,端口是8080,后端服务端口8058.访问前端项目时,调用后端接口报跨域. 后端环境 正常访问端口8058 经过nginx配置(文末 ...

  6. 【matplotlib 实战】--热力图

    热力图,是一种通过对色块着色来显示数据的统计图表.它通过使用颜色编码来表示数据的值,并在二维平面上呈现出来.热力图通常用于显示大量数据点的密度.热点区域和趋势. 绘图时,一般较大的值由较深的颜色表示, ...

  7. Leetcode.456单调栈

    给你一个整数数组 nums ,数组中共有 n 个整数.132 模式的子序列 由三个整数 nums[i].nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 num ...

  8. CF1401B [Ternary Sequence]

    Problem 题目简述 两个序列 \(A, B\).这两个序列都是由 \(0,1,2\) 这三个数构成. \(x_1,y_1,z_1\) 和 \(x_2,y_2,z_2\) 分别代表 \(A\) 序 ...

  9. Python:发送邮件或发带附件的邮件

    在进行发邮件之前,首先了解两个模块:smtplib和email. smtplib模块主要是负责发送邮件的,是一个发邮件的动作,比如连接邮箱服务,登录邮箱,发送邮件等. email模块主要是负责构造邮件 ...

  10. 我们在开发第一个flutter小程序时需要注意什么

    Flutter这些年发展的很快,特别是在 Google 持续的加持下,Flutter SDK 的版本号已经来到了 3开头,也正式开始对 Windows.macOS 和 Linux 桌面环境提供支持.如 ...