在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使用相关推荐

  1. Flutter布局中的松约束、紧约束

    BoxConstraint.loosen:松约束.就是把BoxConstraint中的minWidth和minHeight都变为0. 紧约束:给container的固定值尺寸.即最大值等于最小值 松约 ...

  2. 学习笔记-Flutter 布局(四)- Baseline、FractionallySizedBox、IntrinsicHeight、IntrinsicWidth详解...

    Flutter 布局(四)- Baseline.FractionallySizedBox.IntrinsicHeight.IntrinsicWidth详解 本文主要介绍Flutter布局中的Basel ...

  3. 学习笔记-Flutter 布局(二)- Padding、Align、Center详解

    Flutter 布局(二)- Padding.Align.Center详解 本文主要介绍Flutter布局中的Padding.Align以及Center控件,详细介绍了其布局行为以及使用场景,并对源码 ...

  4. 【Flutter】Flutter 布局组件 ( Wrap 组件 | Expanded 组件 )

    文章目录 一.Wrap 组件 二.Expanded 组件 三.完整代码示例 四.相关资源 一.Wrap 组件 Wrap 组件 : 该组件是可换行的水平线性布局组件 , 与 Row 组件间类似 , 但是 ...

  5. Flutter: 弹性布局Flex(Expanded)、流式布局Wrap、Flow

    用Android原生实现流式布局[实现例如app的很多标签]需要自定义View继承自ViewGroup,然后代码量也不小. 相关自定义View实现流式布局,请参考这位老兄的博客: https://bl ...

  6. Flutter Widget 之 Expanded(填充布局)

    Flutter的Expanded布局与Android布局中weight属性类似,可以设置占满剩余空间. 1. Expanded构造方法: const Expanded({Key key,int fle ...

  7. 【Flutter】Animation 动画 ( Flutter 动画基本流程 | 创建动画控制器 | 创建动画 | 设置值监听器 | 设置状态监听器 | 布局中使用动画值 | 动画运行 )

    文章目录 一.创建动画控制器 二.创建动画 三.设置值监听器 四.设置状态监听器 五.布局中使用动画值 六.动画运行 七.完整代码示例 八.相关资源 Flutter 动画基本流程 : ① 创建动画控制 ...

  8. Flutter布局锦囊---蜡笔画的表单

    设计给的效果如下: 拿到设计后,先把整体拆分成几个部分: "手机号输入框",使用自定义的登录表单字段组件实现的输入框. "验证码输入框",使用自定义的登录表单验 ...

  9. Flutter布局常用widgets

    Flutter 布局常用的 widgets(Common layout widgets) RFDev https://www.jianshu.com/p/d26b64071b99 简单列举总结一下常用 ...

最新文章

  1. CentOS 7 安装 GlusterFS
  2. 微服务架构盛行的时代,你需要了解点 Spring Boot
  3. Eclipse 安装 SVN 插件
  4. opencv 摄像头
  5. jquery获取下拉框的值并传递给后端处理
  6. YBTOJ:伞兵空降(二分图匹配)
  7. 用户画像是怎么生成出来的?
  8. 周二直播丨Oracle数据库SQL执行计划的取得和解析
  9. 【Git入门之二】基本术语
  10. github 建立博客
  11. Java写的斗地主游戏源码
  12. mac android 手机连接打印机,为什么苹果电脑连接打印机打不出来怎么办
  13. java手机游戏主角技能上剑魂,DNF高手来回答
  14. 浅谈FPGA,SoC,ASIC
  15. Yy And WJM
  16. python xlrd读取excel慢_与xlrd相比,使用openpyxl读取Excel文件要慢很多
  17. 12_STM32Cubeide开发_USB从设备串口驱动程序
  18. h5打开麦克风权限录音_h5打开麦克风权限录音_原来电脑上自带录音功能,很多人还不知道,真的太实用了......
  19. AMS1117的输入电压范围
  20. 十六进制转十进制数算法

热门文章

  1. 【C库函数】memcpy函数详解
  2. 解决ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
  3. numpy.polyfit:LinAlgError: SVD did not converge in Linear Least Squares
  4. 基于NodeJS的漫画之家网站
  5. 迈克尔·杰克逊简历流行音乐之王
  6. 品《亮剑》,观《世界杯》
  7. CTF_CRYPTO(习题)
  8. Neo4j数据导入null property value
  9. 手把手教你写出《三子棋》小游戏
  10. 20-Java多线程【干货笔记】