'How can I close all opened previous screens when click on BottomNavigationBar to open new screen?
How can I close all opened previous screens when click on BottomNavigationBar to open new
screen ?
When I navigate through screens and click on a BottomNavigationBar item
to open a new screen, and after go back to the previous screen, it stays the same as when
I left it.
Does anyone can help me ?
This is my code.
import 'package:flutter/material.dart';
import 'home.dart';
import 'caes.dart';
import 'titulos.dart';
import 'vacinas.dart';
import 'cios.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
final colorFundo = Colors.white;
@override
Widget build(BuildContext context) {
return MaterialApp(
// localizationsDelegates: [
// GlobalMaterialLocalizations.delegate,
// GlobalWidgetsLocalizations.delegate
// ],
// supportedLocales: [const Locale('pt', 'BR')],
debugShowCheckedModeBanner: false,
theme: ThemeData(
scaffoldBackgroundColor: colorFundo,
),
home: MyBottomNavigationBar(),
);
}
}
class MyBottomNavigationBar extends StatefulWidget {
@override
State<MyBottomNavigationBar> createState() => _MyBottomNavigationBarState();
}
class _MyBottomNavigationBarState extends State<MyBottomNavigationBar> {
int _currentIndex = 0;
final _page1 = GlobalKey<NavigatorState>();
final _page2 = GlobalKey<NavigatorState>();
final _page3 = GlobalKey<NavigatorState>();
final _page4 = GlobalKey<NavigatorState>();
final _page5 = GlobalKey<NavigatorState>();
void onTabTapped(int index) {
setState(() {
_currentIndex = index;
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: AppBar(
backgroundColor: Color.fromRGBO(1, 87, 155, 1),
title: Center(
child: Text("South Sweet Kennel"),
),
iconTheme: const IconThemeData(color: Colors.black),
),
//body: _children[_currentIndex],
body: IndexedStack(
index: _currentIndex,
children: <Widget>[
Navigator(
key: _page1,
onGenerateRoute: (route) => MaterialPageRoute(
settings: route,
builder: (context) => Home(),
),
),
Navigator(
key: _page2,
onGenerateRoute: (route) => MaterialPageRoute(
settings: route,
builder: (context) => CaesPage(),
),
),
Navigator(
key: _page3,
onGenerateRoute: (route) => MaterialPageRoute(
settings: route,
builder: (context) => TitulosPage(),
),
),
Navigator(
key: _page4,
onGenerateRoute: (route) => MaterialPageRoute(
settings: route,
builder: (context) => VacinasPage(),
),
),
Navigator(
key: _page5,
onGenerateRoute: (route) => MaterialPageRoute(
settings: route,
builder: (context) => CiosPage(),
),
),
],
),
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
onTap: (int index) {
setState(() {
_currentIndex = index;
});
},
currentIndex: _currentIndex,
backgroundColor: Color.fromRGBO(1, 87, 155, 1),
elevation: 15,
iconSize: 30,
selectedFontSize: 20,
selectedIconTheme: IconThemeData(color: Colors.white, size: 40),
selectedItemColor: Colors.white,
selectedLabelStyle: TextStyle(fontWeight: FontWeight.bold),
unselectedIconTheme: IconThemeData(
color: Colors.lightBlue[200],
),
unselectedItemColor: Colors.white,
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.home),
label: 'Home',
),
BottomNavigationBarItem(
icon: Icon(Icons.pets),
label: "Cães",
),
BottomNavigationBarItem(
icon: Icon(Icons.workspace_premium_outlined),
label: 'Títulos',
),
BottomNavigationBarItem(
icon: Icon(Icons.vaccines),
label: 'Vacinas',
),
BottomNavigationBarItem(
icon: Icon(Icons.visibility_outlined),
label: 'Cios',
),
],
),
);
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
