flutter 如何只添加一个BottomNavigationBarItem

57hvy0tb  于 2023-06-07  发布在  Flutter
关注(0)|答案(3)|浏览(177)

我有一个BottomNavigationBar,我只需要在里面添加一个集中按钮,但我得到了这个错误:
'package:flutter/src/material/bottom_navigation_bar. dart':Assert失败:第191行位置15:'items.length >= 2':不是真的
这是合乎逻辑的,因为Flutter的源代码具有以下条件:

//..
assert(items.length >= 2),

所以,这是我的代码,有没有一个变通办法,使用BottomNavigationBar来保持代码的整洁?

BottomNavigationBar(

   items: <BottomNavigationBarItem>[
      buildBottomNavigationBarItem(
         iconData: Icons.close,
      ),

// AN ERROR AFTER COMMENTING THIS:

//    buildBottomNavigationBarItem(
//       iconData: Icons.open,
//    ),
   ],
),

BottomNavigationBarItem buildBottomNavigationBarItem(
      {IconData iconData, String title = ''}
    ) {
    return BottomNavigationBarItem(
      icon: Icon(
        iconData,
        color: Theme.of(context).accentColor,
        size: 0.04 * _deviceHeight,
      ),
      title: Text(
        title,
      ),
    );
}

谢谢

ruoxqz4g

ruoxqz4g1#

您不能使用BottomNavigationBar,但可以创建自己的小部件并将其传入bottomNavigationBar参数。

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: Scaffold(
        body: SafeArea(
          child: Text('Hi'),
        ),
        bottomNavigationBar: Container(
          height: 60,
          color: Colors.black12,
          child: InkWell(
            onTap: () => print('tap on close'),
            child: Padding(
              padding: EdgeInsets.only(top: 8.0),
              child: Column(
                children: <Widget>[
                  Icon(
                    Icons.close,
                    color: Theme.of(context).accentColor,
                  ),
                  Text('close'),
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }
}

如果新的自定义底部导航栏与手机的OS GUI重叠,则可以使用SafeArea小部件 Package InkWell

kg7wmglp

kg7wmglp2#

如果您希望有三个项目将assert(items.length >= 2),变为assert(items.length >= 3),,则可以在底部导航栏中将assert(items.length >= 2),更改为所需的长度

fsi0uk1n

fsi0uk1n3#

如果您的BottomNavigationBar items[]中只有一个项目(BottomNavigationBarItem),则会出现此错误。请在您的项目[](>=2)中至少再添加一个项目

相关问题