Не работает переход по вкладкам меню в flutter

Рейтинг: 1Ответов: 0Опубликовано: 15.04.2023

Собственно, есть код. Все работает нормально кроме навигации. Код написанный на dart. Используется фреймворк flutter. Проблема с навигацией приложения. Находясь на вкладке "игры" и просматривая заголовки статей, меня не отправляет в корневую категорию. Если я нахожусь на вкладке "КТД" - меня отправляет на вкладку "Игры". На огоньках - так же. Как сделать, чтобы находясь на вкладке "игры" и просматривая материалы, я мог вернуться в корневую категорию игр. на вкладке "КТД" - вернуться в корневую категорию "КТД", а на вкладке "огоньки" - в корневую категорию "огоньки"? Примерный код выглядит сейчас так + при нажатии на два раза меня возвращает в родную категорию, а находясь непосредственно в самом корневом каталоге может перебросить на другие вкладки.

import 'package:flutter/material.dart';
import 'Notepade.dart';
import 'home.dart';
import 'od.dart';
import 'Ogonki.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  int _currentIndex = 0;

  final List<Widget> _children = [
    HomePage(),
    OdPage(),
    OgonkiPage(),
  ];

  @override
  Widget build(BuildContext context) {
    return MaterialApp(

      home: Scaffold(
        body: _children[_currentIndex],
        bottomNavigationBar: BottomNavigationBar(
          backgroundColor: Colors.red, // изменение цвета фона меню
          currentIndex: _currentIndex,
          onTap: onTabTapped,
          items: const [
            BottomNavigationBarItem(
              backgroundColor: Colors.red,
              icon: Icon(Icons.games),
              label: 'Игры',
            ),
            BottomNavigationBarItem(
              icon: Icon(Icons.people_sharp),
              label: 'КТД',
            ),
            BottomNavigationBarItem(
              icon: Icon(Icons.local_fire_department),
              label: 'Огоньки',
            ),
          ],
          selectedItemColor: Colors.white, // изменение цвета выбранного элемента
          unselectedItemColor: Colors.white, // изменение цвета невыбранных элементов
          showUnselectedLabels: true, // показывать ли текст для невыбранных элементов
          selectedLabelStyle: TextStyle(fontWeight: FontWeight.bold), // изменение стиля текста для выбранного элемента
          unselectedLabelStyle: TextStyle(fontWeight: FontWeight.normal), // изменение стиля текста для невыбранных элементов
        ),
      ),
    );
  }

  int _lastIndex = 0; // добавляем переменную для хранения индекса последней выбранной вкладки

  void onTabTapped(int index) {
    setState(() {
      if (index == _currentIndex) {
        // Если выбран тот же индекс, то сбрасываем текущий индекс
        switch (_currentIndex) {
          case 0:
          // Если текущий индекс 0 (вкладка "Игры"), то перейти на корневую категорию "Игры"
          // Здесь можно добавить код для перехода на корневую категорию "Игры"
            break;
          case 1:
          // Если текущий индекс 1 (вкладка "КТД"), то перейти на корневую категорию "КТД"
          // Здесь можно добавить код для перехода на корневую категорию "КТД"
            break;
          case 2:
          // Если текущий индекс 2 (вкладка "Огоньки"), то перейти на корневую категорию "Огоньки"
          // Здесь можно добавить код для перехода на корневую категорию "Огоньки"
            break;
          default:
          // Добавьте действия по умолчанию, если необходимо
            break;
        }
        _currentIndex = 0; // Устанавливаем корневой индекс (например, 0)
      } else {
        _currentIndex = index;
      }
    });
  }

}

Ответы

Ответов пока нет.