| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> flutter中mainAxisAlignment和crossAxisAlignment的理解 -> 正文阅读 |
|
[移动开发]flutter中mainAxisAlignment和crossAxisAlignment的理解 |
刚开始学习flutter时对mainAxisAlignment(主轴)和crossAxisAlignment(交叉轴)这两个属性傻傻的分不清,下面记录一下如何区分。 本次学习类代码如下: import 'package:flutter/material.dart'; class ChoicePicture2 extends StatefulWidget { const ChoicePicture2({Key? key}) : super(key: key); @override _PictureState createState() { return _PictureState(); } } class _PictureState extends State<ChoicePicture2> { @override void initState() { super.initState(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text("图片选择"), leading: IconButton( icon: const Icon(Icons.arrow_back), onPressed: () { Navigator.pop(context); }, ), actions: [ IconButton( onPressed: () { ScaffoldMessenger.of(context) .showSnackBar(const SnackBar(content: Text("点击了个人头像按钮"))); }, icon: const Icon(Icons.account_circle)), IconButton( onPressed: () { ScaffoldMessenger.of(context) .showSnackBar(const SnackBar(content: Text("点击了设置按钮"))); }, icon: const Icon(Icons.settings)) ], ), body: Container( //可以设置宽高和背景颜色等多个属性的容器 width: MediaQuery.of(context).size.width, //屏幕的宽 color: Colors.pink, child: Column( // crossAxisAlignment: CrossAxisAlignment.start, // mainAxisAlignment: MainAxisAlignment.start, children: [ const Text( "添加按钮", style: TextStyle(backgroundColor: Colors.blue), ), Container( height: 70, color: Colors.red, child: IconButton( onPressed: () {}, icon: const Icon(Icons.add), iconSize: 50, ), ), const Text( "设置按钮", style: TextStyle(backgroundColor: Colors.blue), ), Container( height: 70, color: Colors.red, child: IconButton( onPressed: () {}, icon: const Icon(Icons.settings), iconSize: 50, ), ), const Text( "打印按钮", style: TextStyle(backgroundColor: Colors.blue), ), Container( height: 70, color: Colors.red, child: IconButton( onPressed: () {}, icon: const Icon(Icons.print), iconSize: 50, ), ), ], ), )); } } 本次学习中主要涉及到的代码是_PictureState类下build中Scaffold下的body,主要修改的就是Column和Row,以及下面的两个属性mainAxisAlignment和crossAxisAlignment。 好了,话不多说,直接上图。 一、使用Column默认情况下如下图。 可以看出默认子控件都是按照水平居中,垂直顶部排列显示的。 下面只管MainAxisAlignment(主轴),不管CrossAxisAlignment(交叉轴),也就是说水平方向上都保持水平居中,只看垂直方向。 1、mainAxisAlignment:MainAxisAlignment.start 默认就是这个模式,即垂直顶部。 2、mainAxisAlignment:MainAxisAlignment.center 垂直居中。 3、mainAxisAlignment:MainAxisAlignment.end 垂直底部。 4、mainAxisAlignment:MainAxisAlignment. spaceEvenly 垂直方向上各子控件间隔相同的分布。 5、mainAxisAlignment:MainAxisAlignment.spaceBetween 垂直方向上首尾子控件没有空隙的子控件间隔相同的分布?。 ? 6、mainAxisAlignment:MainAxisAlignment.spaceAround 垂直方向上首位子控件到顶的间距是其他子控件间距一半的均匀分布。 ? ?下面在上述1--6前提下再加上CrossAxisAlignment,分别与上述1--6对应。 1-1、crossAxisAlignment:CrossAxisAlignment.start 上述1的基础上,水平顶部。 ?2-2、crossAxisAlignment:CrossAxisAlignment.center?上述2的基础上,水平居中。 发现这个和上述2的效果一样,是由于上述2中crossAxisAlignment没有指定,而默认就是水平居中。 ?3-3、crossAxisAlignment:CrossAxisAlignment.end?上述3的基础上,水平底部。 ?另外两个stretch(交叉轴上子控件充满)和baseline(子控件在交叉轴上,并且与基线相匹配) 在上述4的基础上,crossAxisAlignment:CrossAxisAlignment.stretch 效果图如下: 说实话,我没发现?stretch和baseline什么用出,先记录到这。 二、使用Row 此时MainAxisAlignment指的就是水平方向,CrossAxisAlignment指的是垂直方向上。 总结: Column: MainAxisAlignment表示垂直方向,crossAxisAlignment表示水平方向。 Row? ? ?: MainAxisAlignment表示水平方向,crossAxisAlignment表示垂直方向。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 16:38:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |