Flutter:Row组件内两个Text间加空格,SizedBox无效如何解决
在Flutter Row组件中给两个Text添加空格的解决方案
你当前的问题是在Row里放两个Text组件,想要添加水平空格但用SizedBox没效果——原因很简单:你给SizedBox设置了height:20,但Row是水平布局,主轴方向是横向,只有设置width才能产生水平间距。
解决方法一:修正SizedBox参数
把SizedBox的height改成width,就能得到你想要的固定宽度空格:
Padding(padding: EdgeInsetsDirectional.fromSTEB(24, 4, 24, 0), child: Row(mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( 'Discount', style: AppTheme.of(context).subtitle2, ), SizedBox(width: 20,), // 此处修改为width Text( '₹ ${Provider.of<Cart>(context,listen:false).discountPrice}', style: AppTheme.of(context).subtitle1, ), ], ), ),
解决方法二:用Spacer实现自适应空格
如果希望两个Text分别靠向Row的左右两端,自动填充中间所有空间,可以用Spacer组件:
Padding(padding: EdgeInsetsDirectional.fromSTEB(24, 4, 24, 0), child: Row(mainAxisSize: MainAxisSize.max, children: [ Text( 'Discount', style: AppTheme.of(context).subtitle2, ), Spacer(), // 自动填充水平剩余空间 Text( '₹ ${Provider.of<Cart>(context,listen:false).discountPrice}', style: AppTheme.of(context).subtitle1, ), ], ), ),
(注:这种方式下可以去掉原来的mainAxisAlignment: MainAxisAlignment.spaceBetween,效果一致)
解决方法三:直接在Text中添加空格字符
如果只是少量空格,也可以直接在Text内容里加空格,比如:
Text('Discount ') // 直接加多个空格 // 或者用Unicode空格字符 Text('Discount\u0020\u0020\u0020\u0020')
不过这种方式不如组件灵活,空格大小不好精确控制。
内容的提问来源于stack exchange,提问作者rudr'a rajput
相关产品推荐
相关产品推荐

