带有图标和文字的 Flutter 按钮看起来很奇怪
Flutter button with icon and text looks odd
我正在尝试创建一个 Flutter 应用程序,它有一个带有文本和图标作为标签的按钮,该图标位于文本的右侧。 中描述的方法产生了一个看起来很奇怪的按钮,它似乎扩展到应用程序的宽度,请看这张图片(link 因为我不允许附加图片):
Button becomes wide when adding a Row widget as child
我不清楚使用哪些布局小部件来调整文本+图像按钮以将其格式化为纯文本按钮。
生成上述例子的代码:
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Text(
'You have pushed the button this many times:',
),
new Text(
'$_counter',
style: Theme.of(context).textTheme.display1,
),
new RaisedButton(
onPressed: _incrementCounter,
child: new Row(
children: <Widget>[
new Text("Button with text and icon!"),
new Icon(Icons.lightbulb_outline)
],
),
),
new RaisedButton(
onPressed: _incrementCounter,
child: new Text("Button with only text")
),
],
),
),
floatingActionButton: new FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: new Icon(Icons.add),
),
);
}
}
行 属性 mainAxisSize: MainAxisSize.min
在这里发挥作用。
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Home'),
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new RaisedButton(
onPressed: () {},
child: new Row(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
new Text('Button with text and icon!'),
new Icon(Icons.lightbulb_outline),
],
),
),
new RaisedButton(
onPressed: () {},
child: new Text('Button with only text'),
)
],
),
),
);
}
你可以简单地使用这个RaisedButton.icon
简单用法:
RaisedButton.icon(
onPressed: () {},
elevation: 2.0,
shape: new RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(5.0),
),
color: const Color(0xFFFFB822),
icon: Icon(Icons.add_shopping_cart),
label: Text("Add to Cart",
style: TextStyle(
fontWeight: FontWeight.w900,
),
),
)
非常简单易行...
ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Colors.green, elevation: 2),
onPressed: () {},
child: Row(
children: [
Icon(Icons.edit_outlined),
SizedBox(
width: 10.0,
),
Text('Edit'),
],
),
),
您可以随意更改图标或文字颜色。
希望对您有所帮助。
我正在尝试创建一个 Flutter 应用程序,它有一个带有文本和图标作为标签的按钮,该图标位于文本的右侧。
Button becomes wide when adding a Row widget as child
我不清楚使用哪些布局小部件来调整文本+图像按钮以将其格式化为纯文本按钮。
生成上述例子的代码:
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Text(
'You have pushed the button this many times:',
),
new Text(
'$_counter',
style: Theme.of(context).textTheme.display1,
),
new RaisedButton(
onPressed: _incrementCounter,
child: new Row(
children: <Widget>[
new Text("Button with text and icon!"),
new Icon(Icons.lightbulb_outline)
],
),
),
new RaisedButton(
onPressed: _incrementCounter,
child: new Text("Button with only text")
),
],
),
),
floatingActionButton: new FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: new Icon(Icons.add),
),
);
}
}
行 属性 mainAxisSize: MainAxisSize.min
在这里发挥作用。
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Home'),
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new RaisedButton(
onPressed: () {},
child: new Row(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
new Text('Button with text and icon!'),
new Icon(Icons.lightbulb_outline),
],
),
),
new RaisedButton(
onPressed: () {},
child: new Text('Button with only text'),
)
],
),
),
);
}
你可以简单地使用这个RaisedButton.icon
简单用法:
RaisedButton.icon(
onPressed: () {},
elevation: 2.0,
shape: new RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(5.0),
),
color: const Color(0xFFFFB822),
icon: Icon(Icons.add_shopping_cart),
label: Text("Add to Cart",
style: TextStyle(
fontWeight: FontWeight.w900,
),
),
)
非常简单易行...
ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Colors.green, elevation: 2),
onPressed: () {},
child: Row(
children: [
Icon(Icons.edit_outlined),
SizedBox(
width: 10.0,
),
Text('Edit'),
],
),
),
您可以随意更改图标或文字颜色。 希望对您有所帮助。