0

我有一个底部导航栏

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

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

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),
            )
          ]
        ),
      )

但是当我使用它时,我得到了这个错误:

The values in a const list literal must be constants.
Try removing the keyword 'const' from the list literal.
4

3 回答 3

3

在声明里面的项目之前删除const关键字BottomNavigationBar

于 2020-10-09T14:54:49.530 回答
0

的类型MyCart<Widget>并且您将items属性设置BottomNavigationBar为类型List<BottomNavigationBarItem>将其设置为。List<Widget>不要将其设置为,List<dynamic>因为所有子项都必须是颤振小部件。如果您这样做并再次调用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),
            )
          ]
        ),
      )

可能是其他解决方案

于 2020-10-09T14:57:12.620 回答
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),
              )
            ]),
          )
        ]),
于 2020-10-09T15:01:16.713 回答