use*_*307 11 flutter flutter-layout flutter-web
我正在做一个 TextButton,我需要将其放置在页面的右侧部分。
按钮内容位于右侧,但按钮本身占据了页面的整个宽度。我怎样才能不这样呢?
这是我的代码:
Padding(
padding: const EdgeInsets.only(bottom: 14.0, right: 7.0),
child: TextButton(
onPressed: onPressed,
style: ButtonStyle(
backgroundColor: MaterialStateProperty.resolveWith<Color>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.pressed))
return Theme.of(context).colorScheme.primary.withOpacity(0.5);
return Colors.red;
},
),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Padding(
padding: const EdgeInsets.only(right: 9.5, top: 1.6),
child: Icon(Icons.back_arrow, color: Colors.blue),
),
Text( "Home",
style: Theme.of(context)
.textTheme
.bodyText2
.merge(TextStyle(color: Colors.blue)
)
),
]),
),
);
Run Code Online (Sandbox Code Playgroud)
我尝试将按钮包裹在“对齐”中,但没有用
dGo*_*ran 11
不确定您到底想要实现什么,但是您可以将所有内容包装到 Row 和 Container 中......
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Container(
width: 150,
alignment: Alignment.centerRight,
child: TextButton(
onPressed: () {},
style: ButtonStyle(
backgroundColor: MaterialStateProperty.resolveWith<Color>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.pressed)) return Theme.of(context).colorScheme.primary.withOpacity(0.5);
return Colors.red; // Use the component's default.
},
),
),
child: Row(mainAxisAlignment: MainAxisAlignment.end, children: <Widget>[
Padding(
padding: const EdgeInsets.only(right: 9.5, top: 1.6),
child: Icon(Icons.arrow_back, color: Colors.blue),
),
Text("Home", style: Theme.of(context).textTheme.bodyText2.merge(TextStyle(color: Colors.blue))),
]),
),
)
],
),
Run Code Online (Sandbox Code Playgroud)
按钮的新对齐方式:
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Container(
height: 50,
width: 150,
alignment: Alignment.centerRight,
child: TextButton(
onPressed: () {},
style: ButtonStyle(
backgroundColor: MaterialStateProperty.resolveWith<Color>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.pressed)) return Theme.of(context).colorScheme.primary.withOpacity(0.5);
return Colors.red; // Use the component's default.
},
),
),
child: Row(children: <Widget>[
Padding(
padding: const EdgeInsets.only(right: 9.5, top: 1.6),
child: Icon(Icons.arrow_back, color: Colors.blue),
),
Text("Home", style: Theme.of(context).textTheme.bodyText2.merge(TextStyle(color: Colors.blue))),
]),
),
)
],
),
Run Code Online (Sandbox Code Playgroud)
小智 6
用 包裹起来Expanded,并确保父级占据整个宽度:
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Expanded(
child: TextButton(
child: Text('Click'),
onPressed: () {},
),
),
]
),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24605 次 |
| 最近记录: |