Как сдвигать вкладки с помощью CupertinoTabBar? В отличие от панели вкладок материала у нас нет контроллера вкладок для переключения вкладок
Я на главной вкладке, и мне нужно перейти на вторую вкладку с помощью CupertinoTabBar. У меня нет tabcontroller для переключения с глобальным ключом, таким как панель вкладок материала. Можете ли вы предложить варианты?
Я попытался использовать глобальный ключ и изменить currentIndex вкладки. Однако не повезло. Закончились варианты.
HomeScreen.dart - Содержит вкладку
```Widget build(BuildContext context) {
return new CupertinoTabScaffold(
tabBar: CupertinoTabBar(
key: HomeScreen._myTabbedPageKey,
backgroundColor: Colors.black,
currentIndex: _currentIndex,
items: <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: new Icon(Icons.home, color: Colors.white),
activeIcon: new Icon(Icons.home,
color: Color.fromARGB(198, 39, 169, 227)),
title: new Text(
'Home',
style: TextStyle(color: Color.fromARGB(198, 39, 169, 227)),
)),
BottomNavigationBarItem(
icon: new Icon(Icons.track_changes, color: Colors.white),
activeIcon: new Icon(Icons.track_changes,
color: Color.fromARGB(198, 39, 169, 227)),
title: new Text(
'Trips',
style: TextStyle(color: Color.fromARGB(198, 39, 169, 227)),
)),
BottomNavigationBarItem(
icon: new Icon(Icons.traffic, color: Colors.white),
activeIcon: new Icon(Icons.traffic,
color: Color.fromARGB(198, 39, 169, 227)),
title: new Text('Track',
style: TextStyle(color: Color.fromARGB(198, 39, 169, 227)))),
BottomNavigationBarItem(
icon: new Icon(Icons.settings, color: Colors.white),
activeIcon: new Icon(Icons.settings,
color: Color.fromARGB(198, 39, 169, 227)),
title: new Text('Settings',
style: TextStyle(color: Color.fromARGB(198, 39, 169, 227))))
],
),
tabBuilder: (BuildContext context, int index) {
if (_currentIndex != -1) {
_currentIndex = index;
return _children[_currentIndex];
} else {
return _children[index];
}
},
);
}```
HomeTab.dart - содержит кнопку "СМОТРЕТЬ БОЛЬШЕ ПОЕЗДОВ". Нажмите на кнопку, чтобы перейти ко второй вкладке
Widget build(BuildContext context) {
return new CupertinoPageScaffold(
backgroundColor: Colors.white,
navigationBar: new CupertinoNavigationBar(
middle: title,
backgroundColor: Colors.black,
automaticallyImplyLeading: false,
),
child: new RefreshIndicator(
key: _homeRefreshIndicatorKey,
onRefresh: _refresh,
child: new SingleChildScrollView(
child: new Container(
child: new Center(
child: new Column(
// center the children
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
CupertinoButton(
color: Color.fromARGB(198, 39, 169, 227),
disabledColor: Colors.grey,
child: Text('SEE MORE TRIPS',
style: TextStyle(
fontSize: 12,
color: Colors.white,
fontFamily: 'Lato')),
onPressed: () {
//to call second tab
}),
new SizedBox(
height: 16,
)
],
),
),
),
)));
}```
To be navigated to second tab
1 ответ
Вы должны использовать, чтобы изменить индекс панели вкладок, как ожидалось, передав экземпляр
CupertinoTabController
к
CupertinoTabScaffold
собственностью
controller
.
Наконец, измените индекс программно.
setState(() {
_tabController.index = 0;
});