当前位置: 首页 > news >正文

Flutter开发 多孩子布局组件

标题

    • 1.Row 水平排列
    • 2.Column 垂直排列
    • 3.Flex
    • 4.Expanded
    • 5.Warp组件
    • 6.Stack

1.Row 水平排列

(1)MainAxisAlignment
主轴

属性说明
start从主轴的起点开始放置子元素
end从主轴的终点开始放置子元素
center将子元素放置在主轴的中心
spaceAround将主轴方向的空白区域均分,让子元素之间的空白区域相等,单首尾子元素的空白区域为其他空白区的一半

在这里插入图片描述

void main() {runApp(MyPage());
}class MyPage extends StatelessWidget {const MyPage({super.key});Widget build(BuildContext context) {return MaterialApp(theme: ThemeData(), home: MyFul());}
}class MyState extends State {Row row = Row(children: [Text("目录1"), Text("目录2"), Text("目录3"), Text("目录4"), Text("目录5")],mainAxisAlignment: MainAxisAlignment.spaceAround,);Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("Container"), centerTitle: true),body: row,);}
}class MyFul extends StatefulWidget {State<StatefulWidget> createState() {return MyState();}
}

(2)crossAxisAlignment
次轴

属性说明
start在交叉轴上起点处展示
end在交叉轴上终点处展示
center子元素在交叉轴上居中

2.Column 垂直排列

  Column column = Column(children: [Text("11111"),Text("11111"),Text("11111"),Text("11111"),Text("11111"),],mainAxisAlignment: MainAxisAlignment.spaceAround,//垂直方向为主轴);

在这里插入图片描述

3.Flex

row与Column的组合
在这里插入图片描述

class MyState extends State {Flex flex = Flex(direction: Axis.horizontal,children: [Text("data1"), Text("data2"), Text("data3"), Text("data4")],);Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("Column"), centerTitle: true),body: flex,);}
}

4.Expanded

将子元素的宽度或高度扩展至充满主轴方向的空白空间。Expanded不是多孩子布局,经常与多孩子布局组件组合使用。
请添加图片描述

class MyState extends State {Row row = Row(children: [Expanded(flex: 1, child: TextField()), //flex相当于android的weightExpanded(flex: 0, child: Text("发送")),],);Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("Flex"), centerTitle: true),body: row,);}
}

5.Warp组件

可以将其承载的子元素自动换行的组件。

在这里插入图片描述

class MyState extends State {Wrap wrap = Wrap(children: [OutlinedButton(onPressed: () {}, child: Text("data")),OutlinedButton(onPressed: () {}, child: Text("data")),OutlinedButton(onPressed: () {}, child: Text("data")),OutlinedButton(onPressed: () {}, child: Text("data")),OutlinedButton(onPressed: () {}, child: Text("data")),OutlinedButton(onPressed: () {}, child: Text("data")),OutlinedButton(onPressed: () {}, child: Text("data")),OutlinedButton(onPressed: () {}, child: Text("data")),OutlinedButton(onPressed: () {}, child: Text("data")),],);Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("Flex"), centerTitle: true),body: wrap,);}
}

6.Stack

可以将其承载的子元素堆叠,

请添加图片描述

class MyState extends State {Stack stack = Stack(alignment: Alignment.bottomCenter,//对齐方式children: [CircleAvatar(radius: 50,backgroundImage: NetworkImage("https://pic.rmb.bdstatic.com/bjh/news/49fa0be5e4ab397fe5a04412d5cfe3f6.png",),),Text("直播中",style: TextStyle(backgroundColor: Colors.red, color: Colors.white),),],);Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("Flex"), centerTitle: true),body: stack,);}
}

请添加图片描述

class MyState extends State {Stack stack = Stack(alignment: Alignment(0.8, 0.8),children: [CircleAvatar(radius: 50,backgroundImage: NetworkImage("https://pic.rmb.bdstatic.com/bjh/news/49fa0be5e4ab397fe5a04412d5cfe3f6.png",),),Text("V",style: TextStyle(backgroundColor: Colors.red, color: Colors.white),),],);Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("Flex"), centerTitle: true),body: stack,);}
}

Alignment(0.8, 0.8)跟坐标有关系,(0,0)正好在图片中间。
请添加图片描述

http://www.lryc.cn/news/614419.html

相关文章:

  • [202403-B]算日期
  • 蓝桥杯----大模板
  • V4L2摄像头采集 + WiFi实时传输实战全流程
  • FreeRTOS入门知识(初识RTOS)(一)
  • Chat GPT5功能
  • 使用 Gulp 替换 XML 文件内容
  • 明厨亮灶场景下误检率↓76%:陌讯多模态融合算法实战解析
  • Ignite节点生命周期钩子机制详解
  • 基于Spring Boot的Minio图片定时清理实践总结
  • 如何使用Databinding实现MVVM架构
  • GPT5新功能介绍以及和其他模型对比
  • InfluxDB漏洞:Metrics 未授权访问漏洞
  • 借助Rclone快速从阿里云OSS迁移到AWS S3
  • 【数据结构】哈希扩展学习
  • 在 Mac 上安装 IntelliJ IDEA
  • 达梦(DM)闪回使用介绍
  • 智能云探索:基于Amazon Bedrock与MCP Server的AWS资源AI运维实践
  • 微信小程序miniprogram-ci 模块实现微信小程序的自动上传功能
  • 微型导轨在半导体制造中有哪些高精密应用场景?
  • 5 种简单方法将 Safari 书签转移到新 iPhone
  • 苹果iPhone 17系列将发售,如何解决部分软件适配问题引发讨论
  • 3 种简单方法备份 iPhone 上的短信 [2025]
  • 若以微服务部署踩坑点
  • Day10 SpringAOP
  • GitLab同步提交的用户设置
  • 智能厨具机器人的革命性升级:Deepoc具身模型外拓板技术解析
  • JAVA,Maven聚合
  • “A flash of inspiration“, protect us from prompt injection?
  • Node.js 》》bcryptjs 加密
  • Kafka + 时间轮 + 数据库实现延迟队列方案