#flutter #bottomnavigationview #flutter-cupertino
#flutter #bottomnavigationview #flutter-купертино
Вопрос:
Я использую дизайн из Купертино во Flutter и использую CupertinoTabBar
. Я хочу перейти к другому элементу вкладки при переходе с другого экрана.
Например, у меня есть 2 элемента: Главная страница и профиль. CupertinoTabBar
определяется на главном экране. Из HomeScreen
я хочу иметь кнопку для перехода на ProfileScreen
вкладку. Как перемещаться в этой ситуации?
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class MainScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _MainScreenState();
}
}
class _MainScreenState extends State<MainScreen> {
@override
Widget build(BuildContext context) {
return Material(
child: CupertinoTabScaffold(
tabBar: CupertinoTabBar(
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.home),
title: Text("Home")
),
BottomNavigationBarItem(
icon: Icon(Icons.user),
title: Text("My Appointments")
)
],
),
tabBuilder: (BuildContext context, int index) {
switch (index) {
case 0:
return CupertinoTabView(
builder: (BuildContext context) {
return HomeScreen();
},
defaultTitle: 'Home',
);
break;
case 1:
return CupertinoTabView(
builder: (BuildContext context) => ProfileScreen(),
defaultTitle: 'Profile',
);
break;
}
return null;
},
),
);
}
}
class HomeScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return Container(
child: CupertinoButton(
child: Text("Check Profile"),
onPressed: () {
// Pop this page and Navigate to Profile page
},
)
);
}
}
class ProfileScreen extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return Container(
child: Text("Profile")
);
}
}
Комментарии:
1. Вы нашли решение своей проблемы?.. если да, можете ли вы поделиться
2. Пока нет. Сделал что-то по-другому, чтобы исключить эту вещь.
Ответ №1:
Может быть, смогу вам помочь
int currentTabIndex = 0;
onTapped(int index) {
setState(() {
currentTabIndex = index;
});
}
List<Widget> tabs = [
InicioPage(),
OfertasPage(),
FavoritosPage(),
Login(),
];
tabBuilder: (context, index) {
switch (index) {
case 0:
return InicioPage();
break;
case 1:
return OfertasPage();
break;
case 2:
return FavoritosPage();
break;
case 3:
return Login();
default:
return InicioPage();
break;
}
}
Комментарии:
1. Возможно, вы захотите предоставить некоторый контекст за пределами фрагмента кода.