Я хочу перейти ко второму нижнему элементу на странице во флаттере, с других страниц.
Родитель здесь - BottomNavigationBar, который я хочу настроить изменение страницы (я определяю ключ для нее в провайдере для доступа к ней с других страниц).
List<Widget> pages = new List<Widget>();
BottomNavigationBar bottomNavigationBar;
updateList(){
pages.addAll({
Dashboard(),
AllServices(),
Account(),
Charge(),
});
}
int _selectedIndex = 0;
Widget _bottomNavigationBar(int selectedIndex,key) {
return BottomNavigationBar(
key: key,
onTap: (int index) => setState(() => _selectedIndex = index),
currentIndex: selectedIndex,
type: BottomNavigationBarType.fixed,
items: <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: new Icon(Icons.home),
title: new Text("A page"),
),
BottomNavigationBarItem(
icon: new Icon(Icons.location_on),
title: new Text("B page")
),
BottomNavigationBarItem(
icon: new Icon(Icons.store),
title: new Text("C page")
),
BottomNavigationBarItem(
icon: new Icon(Icons.person),
title:new Text("D page")
),
],
);
}
@override
void initState() {
// TODO: implement initState
super.initState();
updateList();
}
@override
Widget build(BuildContext context) {
final globalKeyForBottomNavigate = Provider.of<Controller>(context, listen: false).bottomNavigate;
return Scaffold(
bottomNavigationBar: _bottomNavigationBar(_selectedIndex,globalKeyForBottomNavigate),
body: pages[_selectedIndex],
);
}
А потомками являются страницы A, B, C, D. теперь со страницы AI Перейдите на страницу F. Затем, если действие инициировано, я хочу перейти на страницу B, но мое решение состоит в том, чтобы изменить индекс BottomNavigationBar на странице F, а затем перейти на страницу A. Это работает, но не ведет непосредственно к содержимое страницы B и BottomNavigationBar. В моем решении я говорю «хорошо» сначала измените индекс BottomNavigationBar, затем go до последней страницы (здесь это страница A), но, как вы видите, я не знаю, как напрямую перейти на страницу B. Это код для страница F.
onTap: (){
var bottomKey=Provider.of<Controller>(context, listen: false).bottomNavigate;
final BottomNavigationBar navigationBar = bottomKey.currentWidget;
navigationBar.onTap(1);
Navigator.pop(context);
},