如何在Flutter中将徽章添加到BottomNavigationBarItem?

时间:2020-10-09 14:44:34

标签: android flutter dart flutter-bottomnavigation

我有一个BottomNavigationBar

NotSerializableException

我想将徽章添加到MyCart图标,我看到Stack用于BottomNavigationBar的图标,如下所示:

BottomNavigationBar(
        items: const <BottomNavigationBarItem>[
          BottomNavigationBarItem(
            icon: Icon(Icons.shopping_cart),
            label: 'MyCart',
          ),
          .
          .
          .
          ])

但是当我使用它时,出现此错误:

new BottomNavigationBarItem(
        title: new Text('Home'),
        icon: new Stack(
          children: <Widget>[
            new Icon(Icons.home),
            new Positioned(  // draw a red marble
              top: 0.0,
              right: 0.0,
              child: new Icon(Icons.brightness_1, size: 8.0, 
                color: Colors.redAccent),
            )
          ]
        ),
      )

3 个答案:

答案 0 :(得分:2)

在声明const中的项目之前,删除BottomNavigationBar关键字

答案 1 :(得分:0)

MyCart的类型为<Widget>,并且您将items的{​​{1}}属性设置为类型BottomNavigationBar,并将其设置为List<BottomNavigationBarItem>。请勿将其设置为List<Widget>,因为所有子项都必须是flutter小部件。如果执行此操作,然后再次调用List<dynamic>,则将显示到以下小部件树:

MyCart()

可能是其他解决方案

答案 2 :(得分:0)

您不需要使用new / const等。请参见下面的代码...

 bottomNavigationBar: BottomNavigationBar(items: [
          BottomNavigationBarItem(
            label: 'aaaaaa',
            icon: Stack(children: <Widget>[
              Icon(Icons.home),
              Positioned(
                // draw a red marble
                top: 0.0,
                right: 0.0,
                child: Icon(Icons.brightness_1, size: 8.0, color: Colors.redAccent),
              )
            ]),
          ),
          BottomNavigationBarItem(
            label: 'dddddd',
            icon: Stack(children: <Widget>[
              Icon(Icons.home),
              Positioned(
                // draw a red marble
                top: 0.0,
                right: 0.0,
                child: Icon(Icons.brightness_1, size: 8.0, color: Colors.redAccent),
              )
            ]),
          )
        ]),