Flutter中如何去除RawMaterialButton的外边距?
问题描述
我编写了以下Flutter代码:
Container( alignment: Alignment.centerLeft, padding: EdgeInsets.all(0), color: Colors.red, margin: EdgeInsets.all(0), child: RawMaterialButton( constraints: BoxConstraints(minHeight: 32, maxHeight:32, minWidth:32, maxWidth:32), onPressed: () => {}, fillColor: Colors.indigo, child: Icon( Icons.add, color: Colors.white, ), padding: EdgeInsets.all(0), shape: CircleBorder(), ), );
运行结果如下:
可以看到RawMaterialButton周围存在空白,请问该如何去除这个空白?
解决方法
这个空白是RawMaterialButton的默认点击区域设置导致的——Flutter为了保证按钮有足够的可点击面积,默认会将materialTapTargetSize设为MaterialTapTargetSize.padded,强制最小点击区域为48x48,所以哪怕你已经设置了32x32的constraints,按钮周围还是会多出一圈空白。
只需要给RawMaterialButton添加materialTapTargetSize: MaterialTapTargetSize.shrinkWrap属性,让点击区域收缩到按钮实际大小即可:
修改后的代码:
Container( alignment: Alignment.centerLeft, padding: EdgeInsets.all(0), color: Colors.red, margin: EdgeInsets.all(0), child: RawMaterialButton( constraints: BoxConstraints(minHeight: 32, maxHeight:32, minWidth:32, maxWidth:32), onPressed: () => {}, fillColor: Colors.indigo, child: Icon( Icons.add, color: Colors.white, ), padding: EdgeInsets.all(0), shape: CircleBorder(), // 让点击区域收缩到按钮实际尺寸 materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), );
注意:如果按钮尺寸过小(小于48x48),可能会降低用户的点击体验,建议根据实际业务场景权衡是否需要保留足够的点击区域。
内容的提问来源于stack exchange,提问作者user5182503
相关产品推荐
相关产品推荐

