我有一个BottomNavigationBar,我只需要在其中添加一个集中式按钮,但出现此错误:
'package:flutter / src / material / bottom_navigation_bar.dart':失败的断言:第191行pos 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,
),
);
}
谢谢
答案 0 :(得分:1)
您不能使用BottomNavigationBar,而是可以创建自己的小部件并将其作为bottomNavigationBar参数传递。
希望这个示例可以帮助您制作自己的底部导航栏。
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
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')
],
),
),
),
)),
);
}
}
答案 1 :(得分:0)
如果您希望三个项目将 assert(items.length >= 2),
变为 assert(items.length >= 2),
,您可以在底部导航栏中将 assert(items.length >= 3),
更改为所需的长度