flutter - 如何自动将 Flutter 中的图标大小设置为尽可能大

目前,我正在使用以下代码:

   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'),
                  ],
                ),
                onPressed: null,
              )
            ])));

但是,我不得不将图标大小“硬编码”为 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);
      }),
    );
  }
}

https://stackoverflow.com/questions/45817007/

相关文章:

android - Flutter 未检测到 Android SDK

flutter - 如何在 flutter 中仅使一行2个元素中的一个元素居中

flutter - 了解 Flutter 渲染引擎

firebase - 如何使用 Firebase 身份验证在 Flutter 中注销用户

flutter - 如何在 flutter 中使文本与宽度允许的一样大

flutter - 在 flutter 中使用 TabBarView 获取 'Horizontal

dart - Material Flutter 应用源码

dart - 如何自动缩小文本小部件中的字体以适应最大行数?

java - 使用 Platform Channels 在 Flutter 中调用原生库

flutter - 从 Widget 或 Canvas 创建原始图像