Пропадает BottomNavigator при переходах по страницам
Изучаю flutter уже как неделю и не пойму, почему при переходах по страницам как-то странно работает навигация. Пример: у меня есть кнопка на главной странице, которая переносит на страницу с личными данными, при переходе обратно на главную, как и при переходе на нужную страницу у меня пропадает Bottom Navigato, а хочется, чтобы оставался. Bottom Navigator
import 'package:flutter/material.dart';
import 'package:flutter_application_1/constants.dart';
import 'package:flutter_application_1/pages/HomePage.dart';
import 'package:flutter_application_1/pages/ProfilePage.dart';
class BottomNavigator extends StatefulWidget {
@override
_BottomNavigatorState createState() => _BottomNavigatorState();
}
class _BottomNavigatorState extends State<BottomNavigator> {
int _sectionIndex = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: mainBackgroudColor,
body: this.getBody(),
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.home_outlined),
label: 'Home',
),
BottomNavigationBarItem(
icon: Icon(Icons.directions_run_outlined),
label: 'Run',
),
BottomNavigationBarItem(
icon: Icon(
Icons.group_outlined,
),
label: 'Group',
),
BottomNavigationBarItem(
icon: Icon(Icons.person_outlined),
label: 'Account',
)
],
currentIndex: _sectionIndex,
selectedItemColor: Colors.red,
unselectedItemColor: iconColor,
showSelectedLabels: false,
showUnselectedLabels: false,
backgroundColor: backgroudColorBottomNavigation,
iconSize: 32,
onTap: (int index) {
this.onTapHandler(index);
},
),
);
}
Widget getBody() {
if (this._sectionIndex == 0) {
return HomePage();
} else {
return ProfilePage();
}
}
void onTapHandler(int index) {
this.setState(() {
this._sectionIndex = index;
});
}
}
Main
import 'package:flutter/material.dart';
import 'package:flutter_application_1/component/edit_profile_pages/EditProfilePage.dart';
import 'package:flutter_application_1/pages/FeedBackPage.dart';
import 'package:flutter_application_1/pages/HomePage.dart';
import 'package:flutter_application_1/pages/MyStarts.dart';
import 'package:flutter_application_1/pages/PostsInTheCommunityPage.dart';
import 'package:flutter_application_1/pages/ProfilePage.dart';
import 'navigation/BottomNavigation.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget{
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: BottomNavigator(),
),
//initialRoute: '/homePage',
routes: {
'/homePage': (context) => HomePage(),
'/testPage': (context) => TestPage()
},
);
}
}
Страницы для перехода
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_application_1/component/widgets_for_profile/BackButton.dart';
import 'package:flutter_application_1/component/widgets_for_profile/CustomButton.dart';
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black,
body: Center(
child: MyCustomButton(
Icons.person_outlined,
'TEST',
Icons.keyboard_arrow_right,
route: '/testPage',
),
),
);
}
}
class TestPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black,
body: Center(child: CustomBackButton(nameRoute: '/homePage'))
);
}
}
И кнопки, в которых реализована переход по страницам (BackButton отличается от MyCustomButton, только иконками.
import 'package:flutter/material.dart';
import '../../constants.dart';
class CustomBackButton extends StatelessWidget {
final String nameRoute;
CustomBackButton({required this.nameRoute});
@override
Widget build(BuildContext context) {
return IconButton(
onPressed: () {
Navigator.pushNamed(context, nameRoute);
},
icon: Icon(
Icons.arrow_back,
size: 26,
color: iconColor,
),
);
}
}