Я использую нижнюю панель навигации. На определенном триггере событий мне нужно показать какое-то предупреждение на текущем экране.
Так я реализовал нижнюю панель навигации. У меня есть четыре вкладки.
Здесь мне нужно изменить значок 4-й вкладки, когда _isHomeDetected
истинно и когда пользователь нажимает на значок, то есть на индекс 3, я должен показывать предупреждающее сообщение независимо от того, на какой вкладке находится пользователь. Как я могу сделай это?
class LandingScreen extends StatefulWidget {
static Widget bottomNavigationBar;
..
}
class _LandingScreenState extends State<LandingScreen> {
...
StreamSubscription<String> _subscription;
bool _isHomeDetected = false;
@override
void initState() {
...
_subscription = server.messages.listen(onData, onError: onError);
}
onData(message) {
setState(() {
_isHomeDetected = json.decode(message)["isHomeBeacon"];
});
}
...
@override
Widget build(BuildContext context) {
LandingScreen.bottomNavigationBar = new BottomNavigationBar(
....
);
return new Scaffold(
body: _currentPage,
bottomNavigationBar: LandingScreen.bottomNavigationBar,
);
}
_navigateToScreens(int currentIndex) {
List screens = [
..
];
setState((){
if (!_isHomeDetected || currentIndex != 3){
_currentPage = screens[currentIndex];
} else {
Utils.showCupertinoAlert(
context: context, content: "You wanna log out???");
}
});
}
}