Row組件可讓Row裏邊的子元素進行水平排列。Row組件能夠分爲靈活排列和非靈活排列兩種。less
Expanded
來進行解決,也就是靈活佈局。在按鈕的外邊加入Expanded就能夠了/** * 不靈活水平佈局 */ class RowWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Row( children: <Widget>[ RaisedButton(onPressed: () {}, color: Colors.red, child: Text('紅色按鈕')), RaisedButton( onPressed: () {}, color: Colors.orange, child: Text('黃色按鈕'), ), RaisedButton(onPressed: () {}, color: Colors.pink, child: Text('粉色按鈕')) ], ); } }
實現效果:ide
頁面上已經有了三個按鈕,但這三個按鈕並無充滿一行,而是出現了空隙。這就是不靈活橫向排列形成的。它根據子元素的大小來進行排列。若是想實現充滿一行的效果,就要使用靈活水平佈局了。佈局
/** * 靈活水平佈局 */ class RowExpandedWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Row( children: <Widget>[ Expanded( child: RaisedButton( onPressed: () {}, color: Colors.red, child: Text('紅色按鈕'))), Expanded( child: RaisedButton( onPressed: () {}, color: Colors.orange, child: Text('黃色按鈕'), )), Expanded( child: RaisedButton( onPressed: () {}, color: Colors.pink, child: Text('粉色按鈕'))) ], ); } }
實現效果:ui
這時候就能夠佈滿一行了。還有一種就是隻想讓部分實現靈活水平佈局,就要使用混合水平佈局了。code
/** * 混合水平佈局 */ class RowMixWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Row( children: <Widget>[ RaisedButton(onPressed: () {}, color: Colors.red, child: Text('紅色按鈕')), Expanded( child: RaisedButton( onPressed: () {}, color: Colors.orange, child: Text('黃色按鈕'), )), RaisedButton(onPressed: () {}, color: Colors.pink, child: Text('粉色按鈕')) ], ); } }
實現效果:blog
中間的按鈕爲靈活水平佈局,而兩邊的按鈕保持真實大小,爲非靈活水平佈局。圖片