Flutter 同一Row内如何实现左侧文本左对齐、右侧图标右对齐
Flutter 帖子页脚左右对齐布局解决方案
只需在左侧点赞文本容器和右侧图标容器之间插入Spacer组件即可实现左文本、右图标的两端对齐效果,Spacer会自动填充Row内的剩余空白区域,将两侧组件推到行的两端。
修改后的完整代码:
Row( mainAxisAlignment: MainAxisAlignment.start, children: [ Container( child: TextButton( onPressed: () { Navigator.of(context).push( CupertinoPageRoute( builder: (_) => Comments(post: widget.post), ), ); }, child: Text( "${widget.post.notes} likes", style: TextStyle(fontSize: 16, color: Colors.black), ), ), ), // 新增Spacer填充空白 const Spacer(), Wrap( children: [ Container( child: AnimatedIconButton( onPressed: () { setState(() {}); }, icons: [ AnimatedIconItem( icon: Icon(CupertinoIcons.arrow, size: 25, color: Colors.grey), ), AnimatedIconItem( icon: Icon(CupertinoIcons.arrow, size: 25, color: Colors.grey), ), ], ), ), Container( child: AnimatedIconButton( onPressed: () { setState(() { _toggleFavorite(widget.post.id); }); }, icons: [ AnimatedIconItem( icon: Icon( CupertinoIcons.heart, size: 25, color: _isFavorited ? Colors.red[500] : Colors.grey, ), ), AnimatedIconItem( icon: Icon( CupertinoIcons.heart, size: 25, color: _isFavorited ? Colors.red[500] : Colors.grey, ), ), ], ), ), ], ), ], ),
原Align方案失效原因:
Align组件默认会尽可能占据父组件分配的所有可用空间,在Row没有明确宽度限制的场景下,Align会占满整行剩余宽度,导致图标超出可视区域或者触发换行。如果要使用Align实现,需要给Align外层套上Expanded组件明确宽度范围,相比之下Spacer的写法更简洁,也不需要调整原有组件的结构。
内容的提问来源于stack exchange,提问作者EmJeiEn
相关产品推荐
相关产品推荐

