Не работает переход по вкладкам меню в flutter
Собственно, есть код. Все работает нормально кроме навигации. Код написанный на 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;
}
});
}
}