BottomNavigationBar // 如何更改 BottomNavigationBarItem 的间距

BottomNavigationBar // Ho to change spacing of the BottomNavigationBarItems

编辑:下面的解决方案

Goal/Problem: 我正在使用 FAB 设计 BottomNavigationBar 的样式。我想将第 2 项和第 3 项移得更远一些,这样它们就不会与 FAB 靠得太近。屏幕截图和代码如下。

失败的解决方案:

截图:

无填充:

出于演示目的使用水平填充,图标和标签不同步:

代码(相关填充为零):

BottomNavigationBarItem bottomNavIcon({
  required BuildContext context,
  required Image icon,
  required Image icon_active,
  required String label,
}) {
  return BottomNavigationBarItem(
    icon: Padding(
      padding: EdgeInsets.only(
        top: 6.h,
        bottom: 3.h,
        left: 0.w
        right: 0.w,
      ),
      child: icon,
    ),
    activeIcon: Padding(
      padding: EdgeInsets.only(
        top: 6.h,
        bottom: 3.h,
        left: 0.w
        right: 0.w,
          ),
      child: icon_active,
    ),
    label: label,
  );
}

绝路: 我正在考虑在中间放置一个不可见的图标,并让导航栏的 onTap 方法对索引 2 不执行任何操作......但这真的感觉像是 hack。

编辑//“解决方案”:

我最终使用 hack.Thanks 给 MSARkrish 给我这个片段:

BottomNavigationBarItem(
    backgroundColor: Theme.of(context).backgroundColor,
    icon: const SizedBox.shrink(),
    label: "",
  ),

我需要做的事情才能让它发挥作用:

天哪...我讨厌 BottomNavigationBar 小部件...再也不会使用它...最好从头开始创建它。

我在我们的一个办公室项目中也遇到过类似的情况。我们做了这个 hack 来实现像您一样的 UI。

BottomNavigationBarItem(
        backgroundColor: Theme.of(context).backgroundColor,
        icon: const SizedBox.shrink(),
        label: "",
      ),

这是我在文档中找到的, SizedBox.shrink()

的表示
const SizedBox.shrink(
{Key? key,
Widget? child}
)

示例:

const SizedBox.shrink({ Key? key, Widget? child })
  : width = 0.0,
    height = 0.0,
    super(key: key, child: child);