Flutter问题:Row组件中Widget无法实现左右正确对齐
问题解决:让Text靠左、Icon靠右显示
你的问题出在Row的第一个子组件是无内容的Padding,它占据了左侧空间,导致MainAxisAlignment.spaceBetween把Text和Icon往中间推,而不是贴住容器左右边缘。
修复方案1:给Row整体设置内边距
直接移除空Padding,给Row添加padding属性,既能保留左右间距,又能让Text和Icon靠边缘排列:
import 'package:flutter/material.dart'; class Habits extends StatelessWidget { const Habits({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Padding( padding: EdgeInsets.only(left: 20.0, right: 20.0, top: 20.0), child: Container( decoration: BoxDecoration( color: Colors.green[200], borderRadius: BorderRadius.circular(12), ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, padding: EdgeInsets.all(20), // 给Row整体加内边距 children: [ Text('Home'), Icon(Icons.search), ], ), ), ); } }
修复方案2:给Text和Icon分别设置左右边距
如果需要更灵活的间距控制,可以单独给Text加左内边距、Icon加右内边距:
import 'package:flutter/material.dart'; class Habits extends StatelessWidget { const Habits({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Padding( padding: EdgeInsets.only(left: 20.0, right: 20.0, top: 20.0), child: Container( decoration: BoxDecoration( color: Colors.green[200], borderRadius: BorderRadius.circular(12), ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Padding( padding: EdgeInsets.only(left: 20), child: Text('Home'), ), Padding( padding: EdgeInsets.only(right: 20), child: Icon(Icons.search), ), ], ), ), ); } }
两种方案都能实现你要的效果:Text贴容器左侧,Icon贴容器右侧,同时保留合适的间距。
内容的提问来源于stack exchange,提问作者A-Commons
相关产品推荐
相关产品推荐

