[英]Flutter 2 - How to make rounded corners in the new TextButton and give it a height
如何在新的 TextButton 中添加給定高度並使其角變圓
這是在現已棄用的 FlatButton 中執行此操作的方法。
FlatButton(
height: 44,
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(4.0)),
color: Colors.green[900],
minWidth: double.infinity,
onPressed: () => cart.gtynAddToCart(productID),
child: Text(
'Button',
style: TextStyle(color: Colors.white),
));
由於FlatButton
在 Flutter 2.0 中已棄用,您可以使用TextButton
嘗試
TextButton(
onPressed: () => cart.gtynAddToCart(productID),
child: Container(
alignment: Alignment.center,
height: 44,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(4)),
color: Colors.green[900],
),
style:ButtonStyle(tapTargetSize:MaterialTapTargetSize.shrinkWrap,
),
// minWidth: double.infinity,
child: Text(
'Button',
style: TextStyle(color: Colors.white),
)))
我也找到了另一種實現方式,也許你很介意
TextButton(
onPressed: () => cart.gtynAddToCart(productID),
style: ButtonStyle(
tapTargetSize: MaterialTapTargetSize.shrinkWrap,
minimumSize:
MaterialStateProperty.all(Size(double.infinity, 44)),
shape: MaterialStateProperty.all(
RoundedRectangleBorder(
borderRadius: BorderRadius.circular(4.0)),
),
backgroundColor:
MaterialStateProperty.all(Colors.green[900])),
child: Text(
'Button',
style: TextStyle(color: Colors.white),
textAlign: TextAlign.center,
))
對於角半徑,您必須在內部使用形狀屬性,您可以設置如下所示的內容,對於高度和寬度,只需給它填充。
FlatButton(
child: Text('Rounded Rectangle Border'),
onPressed: () {},
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15)),
color: Colors.pink,
textColor: Colors.white,
padding: EdgeInsets.symmetric(horizontal: 50, vertical: 30),
)
改用 RawMaterialButton:
RawMaterialButton(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(
Radius.circular(22),
),
side: BorderSide(color: Colors.white, width: 0.5)),
onPressed: () {},
child:
Text("Sign UP", style: TextStyle(color: Colors.white)),
),
新的 TextButton 小部件很難設置樣式:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.