class _MyNavigationBarState extends State<MyNavigationBar > { int _currentTabIndex = 0; @override Widget build(BuildContext context) { final _kTabPages = <Widget>[ Page1(), Page2(), Page3(), Container(), ]; final _kBottmonNavBarItems = <BottomNavigationBarItem>[ const BottomNavigationBarItem(icon: Icon(Icons.home), label: 'Home'), const BottomNavigationBarItem(icon: Icon(Icons.network_cell), label: 'Prices'), const BottomNavigationBarItem(icon: Icon(Icons.add_circle), label: 'Trade'), const BottomNavigationBarItem(icon: Icon(Icons.account_balance_wallet), label: 'Wallet'), ]; assert(_kTabPages.length == _kBottmonNavBarItems.length); final bottomNavBar = BottomNavigationBar( items: _kBottmonNavBarItems, currentIndex: _currentTabIndex, type: BottomNavigationBarType.fixed, onTap: (int index) { if(index == 3){ showBottomSheet(); return; } setState(() { _currentTabIndex = index; }); }, ); return Scaffold( body: _kTabPages[_currentTabIndex], bottomNavigationBar: bottomNavBar, ), ); } } showBottomSheet(){ Container _buildBottomSheet(BuildContext context) { return Container( height: 300, padding: const EdgeInsets.all(8.0), decoration: BoxDecoration( border: Border.all(color: Colors.blue, width: 2.0), borderRadius: BorderRadius.circular(8.0), ), child: ListView( children: <Widget>[ const ListTile(title: Text('Bottom sheet')), const TextField( keyboardType: TextInputType.number, decoration: InputDecoration( border: OutlineInputBorder(), icon: Icon(Icons.attach_money), labelText: 'Enter an integer', ), ), Container( alignment: Alignment.center, child: ElevatedButton.icon( icon: const Icon(Icons.save), label: const Text('Save and close'), onPressed: () => Navigator.pop(context), ), ) ], ), ); } }