In my app, I want to overlay another bar above the bottom navigation bar, which stays constant throughout the app. The overlay mechanism works as I desire, except for the fact that the position of it is incorrect when I put it at kBottomNavigationBarHeight
from bottom.
Code:
@override
Widget build(BuildContext context) {
final bar = SizedBox(
height: 60,
child: Container(
color: Colors.green,
),
);
return Scaffold(
backgroundColor: Colors.white,
body: Stack(
children: [
childWidget, // the other page that has a BottomNavigationAppBar
Positioned(
left: 0,
right: 0,
bottom: kBottomNavigationBarHeight,
child: bar, //OfflineAd(),
),
],
),
);
}
This gives me the below where the green-bar overlaps the bottomNavigationAppBar.
So seems like kBottomNavigationBarHeight
does not give me the correct value. I tried adding to it the MediaQuery.of(context).padding.bottom
and MediaQuery.of(context).viewInsets.bottom
, but adding those doesn't get me the right value either. This seems like something that should be really simple. Am I missing something obvious?
If I hardcode, then I can set it correctly for a specific phone model - but obviously that fails on other phones. But for reference, if I hardcode a value of kBottomNavigationBarHeight + 24
, then for this phone model it sits perfectly on top of the bottom bar: