扑动我如何隐藏底部导航条在特定的屏幕?



我有一个底部导航栏,但在一些页面我想隐藏它。我怎样才能做到呢?例如,我想看到appbar在主屏幕,但我不想看到它在搜索屏幕。我的代码是:

Scaffold(
backgroundColor: _selectedIndex == 0 ? Colors.transparent : Colors.white,
extendBodyBehindAppBar: _selectedIndex == 0 ? true : false,
bottomNavigationBar: _navBarItems,
body: Navigator(
onGenerateRoute: (settings) {
Widget page = const HomeScreen();
if (settings.name == '/help_center') {
page = const HelpCenterScreen();
} else if (settings.name == '/search') {
page = const SearchScreen();
}
return MaterialPageRoute(builder: (_) => page);
},
),
);

简单的wrap _navBarItems with Visibility小部件:

//class variable
bool _isVisible = true;//default true
Scaffold(
backgroundColor: _selectedIndex == 0 ? Colors.transparent : Colors.white,
extendBodyBehindAppBar: _selectedIndex == 0 ? true : false,
bottomNavigationBar: Visibility(
visible: _isVisible,
child: _navBarItems,
),
body: Navigator(
onGenerateRoute: (settings) {
Widget page = const HomeScreen();
if (settings.name == '/help_center') {
page = const HelpCenterScreen();
setState(() {
_isVisible = true;
});
} else if (settings.name == '/search') {
setState(() {
_isVisible = false;
});
page = const SearchScreen();
}
return MaterialPageRoute(builder: (_) => page);
},
),
);

并使用setState方法改变if else结构的可见性。

最新更新