Flutter 拉伸并开始FlatButton.icon
在Flutter 拉伸并开始FlatButton.icon,flutter,Flutter,在列中有一组使用FlatButton.icon()创建的FlatButtons 使图像和文本并排放置, 我需要将扁平按钮的内容向左对齐,但按钮是水平拉伸的 将列的crossAxisAlignment设置为crossAxisAlignment.stretch根据需要拉伸按钮的宽度,但将按钮内容居中: 并将其设置为CrossAxisAlignment.start会将按钮的内容向左对齐,但按钮的宽度会缩小: 是否可以将按钮内容向左对齐,但按钮可以拉伸?或者我必须使用其他小部件组合(InkWell例
列中
有一组使用FlatButton.icon()创建的FlatButton
s
使图像和文本并排放置,
我需要将扁平按钮的内容向左对齐,但按钮是水平拉伸的
将列的crossAxisAlignment
设置为crossAxisAlignment.stretch
根据需要拉伸按钮的宽度,但将按钮内容居中:
并将其设置为CrossAxisAlignment.start
会将按钮的内容向左对齐,但按钮的宽度会缩小:
是否可以将按钮内容向左对齐,但按钮可以拉伸?或者我必须使用其他小部件组合(InkWell
例如?)这有点像黑客,但您可以使用常规的FlatButton小部件并执行类似操作:
class SampleWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ConstrainedBox(
constraints: BoxConstraints(
maxWidth: 200,
),
child: FlatButton(
onPressed: () {},
child: Row(
children: <Widget>[
Icon(Icons.home),
Text('Recharge and balance'),
Spacer(),
],
),
),
),
],
);
}
}
class SampleWidget扩展了无状态Widget{
@凌驾
小部件构建(构建上下文){
返回列(
crossAxisAlignment:crossAxisAlignment.stretch,
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
约束盒(
约束:BoxConstraints(
最大宽度:200,
),
孩子:扁平按钮(
按下:(){},
孩子:排(
儿童:[
图标(Icons.home),
文本(“充电和平衡”),
垫片(),
],
),
),
),
],
);
}
}
间隔小部件将占用行的剩余空间。从这里开始,您只需将图标的填充调整为与FlatButton相同。图标您可以使用具有child属性的普通FlatButton()
构造函数,然后您可以将一行作为子行,并使其成为mainAxisAlignment:mainAxisAlignment。启动
并使文本和图标成为子对象,如下图所示:
Scaffold(
body: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
FlatButton(
color: Colors.grey,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Icon(Icons.check),
SizedBox(width: 10),
Text('Recharge and balance')
],
), onPressed: () {},
)
],
),
)
脚手架(
正文:专栏(
crossAxisAlignment:crossAxisAlignment.stretch,
儿童:[
扁平按钮(
颜色:颜色。灰色,
孩子:排(
mainAxisAlignment:mainAxisAlignment.start,
儿童:[
图标(图标。检查),
尺寸箱(宽度:10),
文本(“充电和平衡”)
],
),onPressed:(){},
)
],
),
)
结果是:
尝试将Flatbutton
的padding属性更改为Edgeinsets。仅限(左:0.0)
看看@hiwajalal我已经试过对齐了,但没有成功,我认为这不仅仅是一个对齐问题,更重要的是如何呈现FlatButton
。您的按钮似乎在全屏显示,所以为什么不使用CrossAxisAlignment。开始,通过将double.infinity
指定给按钮的宽度,将按钮的宽度设置为无穷大。如果您的意思是用SizedBox
(原因FlatButton
没有width
属性),它也不起作用=>具有与交叉轴对齐相同的效果。stretch
请检查我下面的答案。错误:RenderBox未布局:RenderBox Interlistener#27293 relayoutBoundary=up9 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE“package:flatter/src/rendering/box.dart”:失败的断言:第1687行位置12:“hasSize”相关er导致ror的小部件是\u FlatButtonWithIcon
padding: Edgeinsets.only(left: 0.0),