Flutter中如何在Column布局的每个Container内插入多个文本
错误原因
Container属于单子组件容器,仅提供child参数接收单个子组件,没有支持传入多个组件的children参数。直接在Container构造参数位置平铺写入两个Text组件不符合Flutter组件的构造语法,必然报错。
正确实现代码
两个文本默认横向排列的实现如下,需要纵向排列时把代码里的Row替换为Column即可:
body: Column( children: <Widget>[ Container( color: Colors.red, width: double.infinity, height: 30, alignment: Alignment.center, // 可选:控制子组件在Container内的对齐位置 child: Row( // 控制Row内子组件的排列方式,按需调整即可 mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ text1, text2, ], ), ), Container( color: Colors.yellow, width: double.infinity, height: 30, alignment: Alignment.center, child: Row( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ text1, text2, ], ), ) ], )
补充说明
- 如果需要调整两个文本之间的间距,可以在两个Text组件之间插入
SizedBox(width: 间距值)(Row场景)或者SizedBox(height: 间距值)(Column场景),也可以通过mainAxisAlignment的spaceBetween、spaceAround等值自动分配间距 - 如果需要两个文本叠加显示,可以将Row/Column替换为
Stack组件 - Flutter组件要严格区分单子组件容器和多子组件容器:Container、Padding、Center、Align这类都是单子组件容器,只能传
child;Column、Row、Stack、Wrap、ListView这类是多子组件容器,才支持传children数组。
内容的提问来源于stack exchange,提问作者Bagas Rizkiyanto
相关产品推荐
相关产品推荐

