我是Flutter的新手,所以我想知道如何设置宽度以匹配父布局宽度
new Container( width: 200.0, padding: const EdgeInsets.only(top: 16.0), child: new RaisedButton( child: new Text( "Submit", style: new TextStyle( color: Colors.white, ) ), colorBrightness: Brightness.dark, onPressed: () { _loginAttempt(context); }, color: Colors.blue, ), ),
我对Expanded标签知之甚少,但Expanded扩展视图向两个方向,我不知道该怎么做.如果你知道,请帮助我,先谢谢你.
正确的解决方案是使用SizedBox.expand
小部件,该小部件强制其child
匹配其父级的大小.
SizedBox.expand( child: RaisedButton(...), )
有许多替代方案,允许或多或少的定制:
SizedBox( width: double.infinity, // height: double.infinity, child: RaisedButton(...), )
或使用 ConstrainedBox
ConstrainedBox( constraints: const BoxConstraints(minWidth: double.infinity), child: RaisedButton(...), )
可以使用ButtonTheme
with 提供size属性minWidth: double.infinity
ButtonTheme( minWidth: double.infinity, child: MaterialButton( onPressed: () {}, child: Text('Raised Button'), ), ),
或者在https://github.com/flutter/flutter/pull/19416登陆后
MaterialButton( onPressed: () {}, child: SizedBox.expand( width: double.infinity, child: Text('Raised Button'), ), ),
new Container { width: double.infinity, child: new RaisedButton(...), }
最简单的方法是使用包装在容器内的FlatButton,默认情况下,Button会采用其父控件的大小,并为容器分配所需的宽度。
Container( color: Colors.transparent, width: MediaQuery.of(context).size.width, height: 60, child: FlatButton( shape: new RoundedRectangleBorder( borderRadius: new BorderRadius.circular(30.0), ), onPressed: () {}, color: Colors.red[300], child: Text( "Button", style: TextStyle( color: Colors.black, fontFamily: 'Raleway', fontSize: 22.0, ), ), ), )
上面的小部件产生以下输出
经过研究,我找到了解决方案,并感谢@GünterZöchbauer,
我用列而不是容器和
将属性设置为CrossAxisAlignment.stretch列以填充Button的父对象
new Column( crossAxisAlignment: CrossAxisAlignment.stretch, children:[ new RaisedButton( child: new Text( "Submit", style: new TextStyle( color: Colors.white, ) ), colorBrightness: Brightness.dark, onPressed: () { _loginAttempt(context); }, color: Colors.blue, ), ], ),