Hello i created a custom BottomNavigation bar with tow IconButton's and i want if I tap on some Icon, that the body of the Scaffold change but it dosen't work.
her is my Cod:
int index = 0;
class Home extends StatelessWidget {
const Home({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
List<Widget> page = [
const HomeScreen(),
const FolderScreen(),
];
return Scaffold(
body: page[index],
bottomNavigationBar: const CustomBottomNavigationBar(),
);
}
}
enum Pages {
home,
folder,
}
class CustomBottomNavigationBar extends StatefulWidget {
const CustomBottomNavigationBar({
Key? key,
}) : super(key: key);
@override
State<CustomBottomNavigationBar> createState() =>
_CustomBottomNavigationBarState();
}
class _CustomBottomNavigationBarState extends State<CustomBottomNavigationBar> {
Pages selectPage = Pages.home;
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
return SizedBox(
width: size.width,
height: 80.0,
child: Stack(
children: [
CustomPaint(
size: Size(size.width, 80.0),
painter: BNBCustomPainter(),
),
Center(
heightFactor: 0.71,
child: Transform.scale(
scale: 1.25,
child: FloatingActionButton(
onPressed: () {},
backgroundColor: Colors.blueAccent,
elevation: 0.1,
child: const Icon(
Icons.add,
size: 40,
),
),
),
),
SizedBox(
width: size.width,
height: 80.0,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
IconButton(
onPressed: () {
setState(() {
selectPage = Pages.home;
index = 0;
print(index);
});
},
icon: Icon(
Icons.home,
color: selectPage == Pages.home
? kActiveBottomNavigationButtonColor
: kInactiveBottomNavigationButtonColor,
size: 35.0,
),
),
SizedBox(width: size.width * 0.20),
IconButton(
onPressed: () {
setState(() {
selectPage = Pages.folder;
index = 1;
print(index);
});
},
icon: Icon(
Icons.folder,
color: selectPage == Pages.folder
? kActiveBottomNavigationButtonColor
: kInactiveBottomNavigationButtonColor,
size: 35.0,
),
),
],
),
),
],
),
);
}
}
her can you see if i tap on some of the tow buttons the index variable change the value to 0(if i tap the home IconButton) or 1(if i tap the folder IconButton)
the index number that i change is on the top from the code and i use them to change the number of the Array in the List what i use in the "body: page[index]".
anyone know why the body dosen't update ?