設置圓角
1.ElevatedButton 設置樣式需要通過buttonStyle設置
buttonStyle可以設置的屬性有:
const ButtonStyle({
this.textStyle, //字體
this.backgroundColor, //背景色
this.foregroundColor, //前景色
this.overlayColor, // 高亮色,按鈕處于focused, hovered, or pressed時的顏色
this.shadowColor, // 陰影顏色
this.elevation, // 陰影值
this.padding, // padding
this.minimumSize, //最小尺寸
this.side, //邊框
this.shape, //形狀
this.mouseCursor, //鼠標指針的光標進入或懸停在此按鈕的[InkWell]上時载碌。
this.visualDensity, // 按鈕布局的緊湊程度
this.tapTargetSize, // 響應觸摸的區(qū)域
this.animationDuration, //[shape]和[elevation]的動畫更改的持續(xù)時間拢操。
this.enableFeedback, // 檢測到的手勢是否應提供聲音和/或觸覺反饋是目。例如闷畸,在Android上殃恒,點擊會產(chǎn)生咔噠聲套才,啟用反饋后迂猴,長按會產(chǎn)生短暫的振動。通常背伴,組件默認值為true沸毁。
});
這些屬性在設置的屬性在設置的時候需要用到MaterialStateProperty 的方式進行設置峰髓,
shape在設置的時候需要用 OutlinedBorder的子類的構造方法進行設置
style: ButtonStyle(
elevation: MaterialStateProperty.all(0),
backgroundColor: MaterialStateProperty.all(Color(0xffFCB605)),
shape: MaterialStateProperty.all(RoundedRectangleBorder(
borderRadius: BorderRadius.circular(35))),
),
設置button的大小
想要實現(xiàn)的效果是按鈕據(jù)屏幕左右邊距各有40px,根據(jù)不同的屏幕寬度自己適應,所以我在外邊放了一個Container 設置了左右margin,然后再里邊放ElevateButton,但是ElevateButton的寬度卻不能撐滿Container息尺,就想在ElevateButton外邊嵌套一個SizeBox,SizeBox設置寬度的話携兵,ElevateButton能夠盛滿SizeBox,但是我想讓SizeBox的寬度撐滿Container掷倔,SizeBox的寬度就不能設置固定眉孩,然后發(fā)現(xiàn)網(wǎng)上寬度可以設置為double.infinity 無窮大,但是不會超出Container的寬度勒葱。
Container(
margin: EdgeInsets.only(
right: ScreenUtil().setWidth(80),
left: ScreenUtil().setWidth(80),
top: ScreenUtil().setHeight(44)),
alignment: Alignment.center,
child: SizedBox(
width: double.infinity,
height: ScreenUtil().setHeight(70),
child: ElevatedButton(
style: ButtonStyle(
elevation: MaterialStateProperty.all(0),
backgroundColor: MaterialStateProperty.all(Color(0xffFCB605)),
shape: MaterialStateProperty.all(RoundedRectangleBorder(
borderRadius: BorderRadius.circular(35))),
),
onPressed: _userLogin,
child: Text(
'登錄',
style: TextStyle(color: Colors.white, fontSize: 15),
),
),
),
)
flutter的布局方式和Android的布局思路完全不同浪汪,一些基本的布局按照Android的實現(xiàn)思路很難實現(xiàn),也很難找到合適的控件凛虽,以后要多看一下flutter的布局實現(xiàn)思路死遭,按照flutter的布局思路解決問題。