首页 > 其他分享 >9、线性布局(Row和Column)

9、线性布局(Row和Column)

时间:2023-11-16 19:15:00浏览次数:29  
标签:IconContainer Column double 组件 key 线性 对齐 color Row

自定义的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)

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

 

标签:IconContainer,Column,double,组件,key,线性,对齐,color,Row
From: https://www.cnblogs.com/xbinbin/p/17835868.html

相关文章

  • 500mA 线性锂电充电芯片 DP4054/DP4054H完全兼容替代TP4054
    锂电池工作原理锂电池是一种新型的可充电电池,其具有体积小、重量轻、容量大耐用性强等特点,因此被广泛应用于手机、笔记本电脑、移动电源等电了设备上。充电原理是指电池在充电过程中,用电流将锂离子从外部电源输入电池,使其形成一个电荷差,实现充电。锂电池充电原理是采用化学反......
  • Get distinct count of rows in the DataSet
    ThetableintheDataSetisasfollows:Column1    Column211              A11              B22              C33              D33              E44              F Dist......
  • Can Report (rdlc) Table or Matrix Column Width Be Set at Runtime?
     UsinganrdlcreportinReportViewer,Ineedtocreateatableormatrixwherethenumberofcolumnsandthekindsofdatadisplayedinthecolumnschangeswitheachreport. Forexample,inonereport,thesecondcolumnmayholdpriceinformation. Ina......
  • 线性回归-梯度下降
    上了篇尝试了利用穷举法来求较好的模型,但是穷举法的效率很低。还有一种更高效的方法,梯度下降法(GradientDescent)。算法过程代码实现x=[338.,333.,328.,207.,226.,25.,179.,70.,208.,606.]y=[640.,633.,619.,393.,428.,27.,193.,66.,226.,1591.]w,b......
  • 第二章——线性表
    第二章——线性表 一、线性表简述1、什么是线性表?线性表(linearlist)是n个具有相同特性的数据元素的有限序列,是一种在实际中广泛使用的数据结构。像数组charbuf[5]={1,2,3,4,5},里面出现的元素都是char型的,不会是int、float等其他类型。2、常见的线性表顺序表、链表、......
  • 线性代数导论MIT第二章知识点
    线性代数导论MIT第二章求解线性方程组1.向量与线性方程组  2.不同角度看方程式也就是矩阵的乘法原型:以行来看方程式就是原式以列来看方程式以矩阵来看方程式 3.消元法的概念 4.消元法的崩溃 两条线互相平行就无法消元 两条线无限多的点  5.3x3......
  • 线性分类器与非线性分类器的区别
    机器学习中的分类器可以大致分为线性分类器和非线性分类器,它们在处理数据时有一些基本的区别。线性分类器:决策边界:线性决策边界:线性分类器假设数据可以通过一个超平面(在二维空间中是一条直线)来划分成不同的类别。例如,对于二分类问题,可以用一条直线将两个类别分开。模型形......
  • el-row设置gutter时,超出容器宽度的解决办法
    原因el-row是通过设置padding-left和padding-right腾出的空间,然后通过margin-left、margin-right设置负值保持位置不变解决办法上述el-row的设计逻辑理论是可行的,但结果是我把margin去掉(即设置为0:margin:0)反而正常了,原因暂时未知。<el-row:gutter="20"style="margin:0"> ......
  • 开源项目SourceBrowser 功能实现中问题修复
    前段时间看到在线原源码浏览网站SourceBrowser,就好奇怎么读的代码展示的,就拔下源码看了下,然后自己打算简单实现下,不想每个工作日弄个把小时弄了两周,才解决报错问题,可以读取到文档,也简单学习了下Roslyc.原项目中时net472跑,我先直接copy拿段读取代码,新建一个控......
  • xor 线性基
    voidadd(intx){ dn(i,60,0)if(x>>i&1){ if(mg[i])x=x^mg[i]; else{mg[i]=x;break;} }}线性基的第\(i\)位如果有数,那它最高位是\(2^i\)。首先这样搞出来的是一个线性基,它有这些性质(线性基能相互异或得到原集合的所有相互异或得到的值。线性基是满足上......