首页 > 其他分享 >10、弹性布局(Flex Expanded)

10、弹性布局(Flex Expanded)

时间:2023-11-16 19:56:07浏览次数:20  
标签:10 IconContainer color Expanded flex key child Flex

自定义的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: double.infinity,
      width: double.infinity,
      child: Icon(icon,size: 50,),
    );
  }
}
  Flex 组件可以沿着水平或垂直方向排列子组件,如果你知道主轴方向,使用 Row 或 Column 会方便一 些,因为 Row 和 Column 都继承自 Flex ,参数基本相同,所以能使用Flex的地方基本上都可以使用 Row 或 Column 。 Flex 本身功能是很强大的,它也可以和 Expanded 组件配合实现弹性布局 。

水平弹性布局

(1)

class MyApp extends StatelessWidget {
  const MyAPP({super.key});

  @override
  Widget build(BuildContext context) {
    return Row(
      children: [
        Expanded(flex: 2,child:  IconContainer(Icons.ac_unit,color: Colors.yellow),//元素设置宽度没有效果
        ),
        Expanded(flex: 2,child:  IconContainer(Icons.home_max,color: Color.fromARGB(255, 226, 12, 47)),
        ),
        Expanded(flex: 1,child:  IconContainer(Icons.ac_unit,color: Color.fromARGB(255, 9, 31, 155)),
        ),
      ],
    );
  }
}

(2)

class HomePage2 extends StatelessWidget {
const HomePage2({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Flex(
//  direction: Axis.vertical, // 垂直
direction: Axis.horizontal, //水平
children: [
Expanded(flex: 2, child: IconContainer(Icons.home, color: Colors.red)),
Expanded(
flex: 1,
child: IconContainer(Icons.search, color: Colors.orange),
)],
);
}}

垂直弹性布局

(1)

class MyRow extends StatelessWidget {
  const MyRow({super.key});

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        Expanded(flex: 2,child:  IconContainer(Icons.ac_unit,color: Colors.yellow),//元素设置高度没有效果
        ),
        Expanded(flex: 2,child:  IconContainer(Icons.home_max,color: Color.fromARGB(255, 226, 12, 47)),
        ),
        Expanded(flex: 1,child:  IconContainer(Icons.ac_unit,color: Color.fromARGB(255, 9, 31, 155)),
        ),
      ],);
  }}

(2)

class HomePage2 extends StatelessWidget {
const HomePage2({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Flex(
 direction: Axis.vertical, // 垂直
 //direction: Axis.horizontal, //水平
children: [
Expanded(flex: 2, child: IconContainer(Icons.home, color: Colors.red)),
Expanded(
flex: 1,
child: IconContainer(Icons.search, color: Colors.orange),
)],
);
}}

 

标签:10,IconContainer,color,Expanded,flex,key,child,Flex
From: https://www.cnblogs.com/xbinbin/p/17836358.html

相关文章

  • 一键整合,万用万灵,Python3.10项目嵌入式一键整合包的制作(Embed)
    我们知道Python是一门解释型语言,项目运行时需要依赖Python解释器,并且有时候需要安装项目中对应的三方依赖库。对于专业的Python开发者来说,可以直接通过pip命令进行安装即可。但是如果是分发给其他的Windows用户,特别是不熟悉Python的人来说,这样过于繁琐。因此最好的办法是连同Pytho......
  • Windows10+VisualStudio2022+CMake+Qt开发环境搭建
    一、概述之前一直使用QtCreator当做QT的开发工具,也没觉得有啥问题。最近使用了VisualStudio+Cmake写了一些SDL2和FFmpeg的东西感觉这个VisualStudio这个工具挺好用的。就萌生了要使用VisualStudio开发Qt的想法。有了这个想法之后就想着需要搭建一个开发环境。百度搜索了......
  • 【操作系统MIT 6.1810(2022版)笔记】Lab实验:环境搭建——以Ubuntu20.04为例
    感觉环境搭建没有别人说的那么难。我是双系统用户(Win+Ubuntu20.04),所以直接在Ubuntu上搭建了。听别人说不要用Ubuntu18.04搭建,不知道为什么参考链接:官网环境搭建教程环境搭建打开终端,输入以下命令并回车运行sudoapt-getinstallgitbuild-essentialgdb-multiarchqemu-s......
  • mysql链接不上3306报错10060
    1、控制台进入查看防火墙(前提mysql我的端口是3306,现在大部分人已经不用3306了)firewall-cmd--zone=public--list-ports(查看3306端口是否开启,如果没见到3306端口)2、添加3306firewall-cmd--zone=public--add-port=3306/tcp--parmanent3、如上添加成功了,最重要的一点来......
  • GD32F103C8T6看门狗
    GD32F10x看门狗两个看门狗设备(独立看门狗IWDG和窗口看门狗WWDG)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位。一、独立看门狗IWDG特性:自由运行的递减计数器;时钟由独立的RC振荡器提供(可在停止和待机模......
  • 若依vue启动报Error: error:0308010C:digital envelope routines::unsupported
    解决:若依vue启动报Error:error:0308010C:digitalenveloperoutines::unsupported1.描述:问题产生原因是因为node.jsV17版本中最近发布的OpenSSL3.0,而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响.解决方法:有很多种,我把适合我的写在第一......
  • fatal error C1007: 无法识别的标志“-FitObjData”(在“p2”中)
    VS编译器版本导致的莫名其妙的链接错误。【LINK:fatalerrorC1007:无法识别的标志“-FitObjData”(在“p2”中)】【errorLNK2019:无法解析的外部符号】-一叶知秋,见微知著-博客园(cnblogs.com)......
  • 性能暴增70%!AMD线程撕裂者RPO 7000将于10月19日发布: 96核心Zen 4史无前例
    据wccftech最新报道,AMD的下一代RyzenThreadripper(线程撕裂者)PRO7000“StormPeak”CPU将于10月19日作为终极工作站解决方案亮相。据悉,线程撕裂者PRO7000是AMD基于Zen4架构的最新一代旗舰工作站CPU,它的推出也意味着基于Zen3的PRO5000系列将退出历史舞台。根据泄露的消息,预计线......
  • 银河麒麟v10系统安装emqx
    1.搭建emqx安装环境yum-yinstalllibatomiclibatomic_ops-devel2.安装emqxwgethttps://www.emqx.com/zh/downloads/broker/5.0.11/emqx-5.0.11-el8-arm64.rpmrpm-iemqx-5.0.11-el8-arm64.rpm3.启动emqx关闭emqxemqxstartemqxstop......
  • 学习笔记10
    目录知识点归纳第12章块设备I/O和缓冲区管理块设备和I/O缓冲区Unix缓冲区管理子系统Unix算法的优点:1.数据的一致性;2.缓存效果;3.临界区;Unix算法的缺点:Unix算法的一些具体说明:新的I/O缓冲区管理算法苏格拉底挑战遇到的问题与解决方案实践过程知识点归纳第12章块设备I/O和缓冲区......