Flutter布局中Expanded使用
在flutter 中对 Expanded 使用 来平分布局占用比例(相当于Android里面的LinearLayout 控件中设置权重),但是在使用中遇到一些坑,然后就开始了踩坑之旅...........
Column
一种 Column 包含 Expanded 正常显示
Widget _columnExpanded(){return new Column(children: <Widget>[new Expanded(child: new Text("有Expanded一半")),new Text("无Expanded一半"),],);}
复制代码
二种 Column 包含 Expanded ,但是 Text 内容增加,如果不加 maxLines: 3, 它会自动换行。如果不设置crossAxisAlignment属性值 那么 new Text("无Expanded一半"), 这个控件会居中 ,因为 Column 中的crossAxisAlignment 默认值是全部居中
Widget _columnMoreExpanded(){return new Column(crossAxisAlignment: CrossAxisAlignment.start,children: <Widget>[new Expanded(child: new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,""有Expanded一半,有Expanded一半有Expanded一半,有Expanded一半,有Expanded一半",maxLines: 3,)),new Text("无Expanded一半"),],);}
复制代码
三种 Column 包含 Expanded ,但在Expanded中使用Column来加载多控件, 显示正常
/** Expanded 嵌套Column控件 然后Column 控件里面放两个 Text 会出现* */
Widget _columnExpandedMoreWidget(){return new Column(children: <Widget>[new Expanded(child: new Column(children: <Widget>[new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",maxLines: 2,overflow: TextOverflow.ellipsis,),new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",maxLines: 1,overflow: TextOverflow.ellipsis,)],)),new Text("无Expanded一半"),],);
}
复制代码
四种 Column 包含 Expanded,只对 Expanded 里面的Row 加入一个 Expanded 这时屏幕上就会出现,如下图情况:(超出屏幕)
Widget _columnExpandedMoreRowWidget(){return new Column(children: <Widget>[new Expanded(child: new Row(children: <Widget>[new Expanded(child: new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",maxLines: 2,overflow: TextOverflow.ellipsis,)),new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",maxLines: 1,overflow: TextOverflow.ellipsis,)],)),new Text("无Expanded一半"),],);
}
复制代码
看到超出屏幕,于是将 Row 中的两个 Text 控件都加上 Expanded ,代码如下:
Widget _columnExpandedMoreRowWidget1(){return new Column(children: <Widget>[new Expanded(child: new Row(children: <Widget>[new Expanded(child: new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",maxLines: 2,overflow: TextOverflow.ellipsis,)),new Expanded(child: new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",maxLines: 1,overflow: TextOverflow.ellipsis,)),],)),new Text("无Expanded一半"),],);
}
复制代码
超出屏幕的提示消除。如图
于是将 Expanded 中 Row 子控件 其中的一个 Text 内容减少,代码如下: 如图:
Widget _columnExpandedMoreRowWidget1(){return new Column(children: <Widget>[new Expanded(child: new Row(children: <Widget>[new Expanded(child: new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",maxLines: 2,overflow: TextOverflow.ellipsis,)),new Expanded(child: new Text("有Expanded一半",maxLines: 1,overflow: TextOverflow.ellipsis,)),],)),new Text("无Expanded一半"),],);
}
复制代码
平分的确算是平分了,但是没有达到效果,又修改: 代码如下:
Widget _columnExpandedMoreRowWidget1(){return new Column(children: <Widget>[new Expanded(child: new Row(children: <Widget>[new Expanded(child: new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",maxLines: 2,overflow: TextOverflow.ellipsis,)),new Text("有Expanded一半有Expanded一半有Expanded一半",maxLines: 2,overflow: TextOverflow.ellipsis,),],)),new Text("无Expanded一半"),],);
}
复制代码
在 Row 中去掉一个 Expanded 设置,就变成了
但是,问题又来了,去掉一个 Expanded 设置后 Text 不能自动换行。目前没有找到解决办法。。。。除非使用前面那个办法 加两个Expanded 但是这样就是平分天下了
Row
在Row中 Column 的第四种 说明了 Row 一行的排列出现的问题,还是 Text 不换行
Widget _rowExpandedMoreWidget(){return new Row(children: <Widget>[new Expanded(child: new Row(children: <Widget>[new Expanded(child: new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",maxLines: 2,overflow: TextOverflow.clip,),),new Expanded(child: new Text("有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,有Expanded一半,",maxLines: 2,overflow: TextOverflow.clip,),),],)),new Text("无Expanded一半"),],);
}
复制代码
通过以上列子 说明 Row 中 要横向的两个控件 要么平分 ,要么 Row 中的另外一个控件宽度不能太长,不然超出边界不能显示,在Column中始终能自动换行
Flutter布局中Expanded使用相关推荐
- Flutter布局中的松约束、紧约束
BoxConstraint.loosen:松约束.就是把BoxConstraint中的minWidth和minHeight都变为0. 紧约束:给container的固定值尺寸.即最大值等于最小值 松约 ...
- 学习笔记-Flutter 布局(四)- Baseline、FractionallySizedBox、IntrinsicHeight、IntrinsicWidth详解...
Flutter 布局(四)- Baseline.FractionallySizedBox.IntrinsicHeight.IntrinsicWidth详解 本文主要介绍Flutter布局中的Basel ...
- 学习笔记-Flutter 布局(二)- Padding、Align、Center详解
Flutter 布局(二)- Padding.Align.Center详解 本文主要介绍Flutter布局中的Padding.Align以及Center控件,详细介绍了其布局行为以及使用场景,并对源码 ...
- 【Flutter】Flutter 布局组件 ( Wrap 组件 | Expanded 组件 )
文章目录 一.Wrap 组件 二.Expanded 组件 三.完整代码示例 四.相关资源 一.Wrap 组件 Wrap 组件 : 该组件是可换行的水平线性布局组件 , 与 Row 组件间类似 , 但是 ...
- Flutter: 弹性布局Flex(Expanded)、流式布局Wrap、Flow
用Android原生实现流式布局[实现例如app的很多标签]需要自定义View继承自ViewGroup,然后代码量也不小. 相关自定义View实现流式布局,请参考这位老兄的博客: https://bl ...
- Flutter Widget 之 Expanded(填充布局)
Flutter的Expanded布局与Android布局中weight属性类似,可以设置占满剩余空间. 1. Expanded构造方法: const Expanded({Key key,int fle ...
- 【Flutter】Animation 动画 ( Flutter 动画基本流程 | 创建动画控制器 | 创建动画 | 设置值监听器 | 设置状态监听器 | 布局中使用动画值 | 动画运行 )
文章目录 一.创建动画控制器 二.创建动画 三.设置值监听器 四.设置状态监听器 五.布局中使用动画值 六.动画运行 七.完整代码示例 八.相关资源 Flutter 动画基本流程 : ① 创建动画控制 ...
- Flutter布局锦囊---蜡笔画的表单
设计给的效果如下: 拿到设计后,先把整体拆分成几个部分: "手机号输入框",使用自定义的登录表单字段组件实现的输入框. "验证码输入框",使用自定义的登录表单验 ...
- Flutter布局常用widgets
Flutter 布局常用的 widgets(Common layout widgets) RFDev https://www.jianshu.com/p/d26b64071b99 简单列举总结一下常用 ...
最新文章
- CentOS 7 安装 GlusterFS
- 微服务架构盛行的时代,你需要了解点 Spring Boot
- Eclipse 安装 SVN 插件
- opencv 摄像头
- jquery获取下拉框的值并传递给后端处理
- YBTOJ:伞兵空降(二分图匹配)
- 用户画像是怎么生成出来的?
- 周二直播丨Oracle数据库SQL执行计划的取得和解析
- 【Git入门之二】基本术语
- github 建立博客
- Java写的斗地主游戏源码
- mac android 手机连接打印机,为什么苹果电脑连接打印机打不出来怎么办
- java手机游戏主角技能上剑魂,DNF高手来回答
- 浅谈FPGA,SoC,ASIC
- Yy And WJM
- python xlrd读取excel慢_与xlrd相比,使用openpyxl读取Excel文件要慢很多
- 12_STM32Cubeide开发_USB从设备串口驱动程序
- h5打开麦克风权限录音_h5打开麦克风权限录音_原来电脑上自带录音功能,很多人还不知道,真的太实用了......
- AMS1117的输入电压范围
- 十六进制转十进制数算法
热门文章
- 【C库函数】memcpy函数详解
- 解决ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
- numpy.polyfit:LinAlgError: SVD did not converge in Linear Least Squares
- 基于NodeJS的漫画之家网站
- 迈克尔·杰克逊简历流行音乐之王
- 品《亮剑》,观《世界杯》
- CTF_CRYPTO(习题)
- Neo4j数据导入null property value
- 手把手教你写出《三子棋》小游戏
- 20-Java多线程【干货笔记】