【发布时间】:2020-03-09 15:35:40
【问题描述】:
我是 Flutter 的新手,下面是代码,如果抽屉打开并且我在“BottomNavigationBar onTap”中的“setState”之前调用了“Navigator.of(context).pop()”,它工作正常。
但如果抽屉未打开且代码运行,它将弹出当前页面,而不是推送带有新正文的重建页面。
class BottomNavigationBarScreen extends StatefulWidget {
static String routeName = '/bottomnavigationscreen';
@override
_BottomNavigationBarScreenState createState() =>
_BottomNavigationBarScreenState();
}
class _BottomNavigationBarScreenState extends State<BottomNavigationBarScreen> {
int _currentIndex = 0;
final _optionButton = [
HomeScreen(),
SearchScreen(),
ScanScreen(),
ShoppingCartScreen(),
];
// void onTap(int index) {
// setState(() {
// _currentIndex = index;
// });
// }
@override
Widget build(BuildContext context) {
GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
return Scaffold(
key: _scaffoldKey,
body: SafeArea(child: _optionButton[_currentIndex]),
drawer: AppDrawerWidget(),
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
currentIndex: _currentIndex,
onTap: (int index) {
Navigator.of(context).pop();
setState(() {
_currentIndex = index;
});
},
items: [
BottomNavigationBarItem(
icon: Icon(
Icons.home,
color: Theme.of(context).iconTheme.color,
),
title: Text(''),
),
BottomNavigationBarItem(
icon: Icon(
Icons.search,
color: Theme.of(context).iconTheme.color,
),
title: Text('')),
BottomNavigationBarItem(
icon: Icon(
IconData(59392, fontFamily: 'icons'),
color: Theme.of(context).iconTheme.color,
),
title: Text('')),
BottomNavigationBarItem(
icon: Icon(
Icons.shopping_cart,
color: Theme.of(context).iconTheme.color,
),
title: Text('')),
]),
);
}
}
【问题讨论】:
-
可以通过
_scaffoldKey.currentState.isDrawerOpen属性检查抽屉是否打开
标签: flutter