I use CupertinoTabView for create screen tabs view. My code example:
Main.dart
Widget _iosApp() {
return CupertinoApp(
home: CupertinoTabScaffold(
tabBar: CupertinoTabBar(
items: NavigationItems().listTabGenerate(context),
currentIndex: 0,
iconSize: 27,
activeColor: AppTheme().get("tab_bar_active"),
inactiveColor: AppTheme().get("tab_bar_not_active"),
backgroundColor: AppTheme().get("tab_bar_background"),
onTap: (value) => print(value),
),
tabBuilder: (BuildContext context, int index) {
print("index $index");
return CupertinoTabView(
onGenerateRoute: RouteGenerator.generateRoute,
);
}
),
);
}
RouteGenerator.dart
class RouteGenerator {
static const HOME_MAIN_SCREEN = "/";
static const ACCOUNT_MAIN_SCREEN = "/account";
static const CART_MAIN_SCREEN = "/cart";
static const CATALOG_MAIN_SCREEN = "/catalog";
static const FAVORITES_MAIN_SCREEN = "/favorites";
static Route<dynamic> generateRoute(RouteSettings settings) {
switch (settings.name) {
case HOME_MAIN_SCREEN:
final page = NavigationTabBar();
return MaterialPageRoute(builder: (context) => page);
case ACCOUNT_MAIN_SCREEN:
final page = AccountScreen();
return MaterialPageRoute(builder: (context) => page);
case CATALOG_MAIN_SCREEN:
final page = CatalogScreen();
return MaterialPageRoute(builder: (context) => page);
case FAVORITES_MAIN_SCREEN:
final page = FavoritesScreen();
return MaterialPageRoute(builder: (context) => page);
default:
return throw Exception('Error! No page for such value');
}
}
}
When I use onGenerateRoute parameter, i get looping bottom navigation widgets and there is no page widget:
It works well for MaterialApp. Why is this happening and what should I change?
