目前,我正在使用以下代码:
body: new Container( child: new Column( crossAxisAlignment: CrossAxisAlignment.stretch,mainAxisAlignment: MainAxisAlignment.spaceEvenly,children: <Widget>[ new MaterialButton( height: 120.0,child: new Column( children: <Widget>[ new Icon( Icons.av_timer,size: 100.0,),new Text('TIMER'),],onPressed: null,new MaterialButton( height: 120.0,child: new Column( children: <Widget>[ new Icon(Icons.alarm_add,size: 100.0),new Text('ALARM'),) ])));
但是,我不得不将Icon大小“硬编码”为100.0,将MaterialButton的高度“硬编码”为120.0.
我希望MaterialButton占用尽可能多的空间(每个屏幕占50%),我希望这些图标能够“很好地适应”该空间,理想情况下还有文本缩放.
我还没有找到在Flutter中做到这一点的方法.如果尝试这样做不是一个好主意(我希望在任何设备上使用屏幕的整个空间),请告诉我原因?
解决方法
您可以使用LayoutBuilder在构建期间动态获取父级大小.
一个工作的例子:
void main() { runApp(new MaterialApp( home: new TestIcon(),)); } class TestIcon extends StatelessWidget { @override Widget build(BuildContext context) { return new Container( color: Colors.white,child: new LayoutBuilder(builder: (context,constraint) { return new Icon(Icons.access_alarms,size: constraint.biggest.height); }),); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。