Как перейти к родственному элементу в нижней панели навигации Flutter Cupertino

#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. Возможно, вы захотите предоставить некоторый контекст за пределами фрагмента кода.