首页 > 解决方案 > Flutter 功能发现——BottomNavigationBarItems 的 DescribedFeatureOverlay

问题描述

我在 ^0.12.1 版本中使用包 feature_discovery。为了显示功能发现覆盖,我需要用 DescribedFeatureOverlay 包装 BottomNavigationBarItem。然而,BottomNavigationBar 的项目需要一个 BottomNavigationBarItem 类型的列表:

Scaffold(
      [...]
      bottomNavigationBar: BottomAppBar(
        [...]
        child: BottomNavigationBar(
          [...]
          items: [
            DescribedFeatureOverlay( // This does not work because items requires type BottomNavigationBarItem
              [...]
              child: BottomNavigationBarItem(
                icon: Icon(item.icon),
                label: item.title,
              ),
            ),
          ],
        ),
      ),
    );

有效的代码是这样的:

Scaffold(
  [...]
  bottomNavigationBar: BottomAppBar(
    [...]
    child: BottomNavigationBar(
      [...]
      items: [
        BottomNavigationBarItem( // need to wrap this with DescribedFeatureOverlay
          icon: Icon(item.icon),
          label: item.title,
        ),
      ],
    ),
  ),
);

我一直在努力寻找解决这个问题的方法。如何用 DescribedFeatureOverlay 包装 BottomNavigationBarItem?这是 Flutter 的限制还是有办法做到这一点?

我是否需要复制、扩展和修改 BottomNavigationBar 类并使用该类来实现这一点?

标签: flutterfeature-discovery

解决方案


作为解决方法,您可以包装BottomNavigationBarItem 类似的图标小部件

 BottomNavigationBarItem(
            icon: DescribedFeatureOverlay(
              featureId: item.featureId,
              title: Text(item.title),
              description: Text(item.description),
              backgroundColor: item.color,
              tapTarget: Icon(item.icon),
              child: Icon(item.icon),
            ),
            label: item.title,
          );

推荐阅读