我有一个小部件,它由Row()MainAxisAlignment.spaceEvenly组成,并且有三个IconButton作为子元素.

第三个按钮使用三元运算符中的布尔showButton来切换是否显示第三个按钮.

我的问题是,当按钮不显示时,行间距仍然占空容器(如底部的图片所示).

除了用两个和三个按钮创建两个单独的容器(在它们之间切换)之外,有没有更好的方法来间隔这些按钮,或者有没有替代空容器的方法来不占用我的对齐空间?

Row(
  mainAxisAlignment: MainAxisAlignment.spaceEvenly,
  children: [
    IconButton(
      onPressed: () {...},
      icon: Icon(...),
    ),
      IconButton(
      onPressed: () {...},
      icon: Icon(...),
    ),
    showButton
        ? Container()
        :  IconButton(
      onPressed: () {...},
      icon: Icon(...),
    ), 
  ],
),

3 buttons

2 buttons

推荐答案

当条件为FALSE时,不使用三元运算符显示空Container,而是可以通过执行以下操作来有条件地将项目包括在列表中:

children: [
  // ...
  if (showButton) IconButton(...),
]

Flutter相关问答推荐

如何在应用栏中将列置于中心

如何从外部控制有状态窗口小部件本身?

如何在Ffltter Chrome应用程序中使用webview_fltter_web显示自定义html而不是外部uri?

audioQuery不会等待判断存储权限

如何将 colored颜色 阴影作为默认容器 colored颜色 应用于自定义窗口小工具?

遇到图像路径格式问题

如何在Flutter 中使用滚动展开窗口小部件

Flutter中的编译时间常量方法

处理 flutter/dart 模型中的空值

flutter Listview构建器溢出

Flutter记录返回类型问题

点击按钮后重新启动定时器

Listview 如何转到下一行/新行?

如何从 showModalBottomSheet 中的 topRight 和 topLeft 移除平边

有什么方法可以将 ChangeNotifier 与 ValueListenableBuilder 一起使用

使用 onPressed 切换到另一个屏幕无法正常工作

Flutter:如何将列表转换为字符串?

构建失败 - 无法解析 io.grpc:grpc-core:[1.28.0]. (是的,我已经升级到 mavenCentral())

如何在dart中编写多个条件?

在 Flutter 中单击时切换按钮 colored颜色 没有改变