Advertisement
pop007

Center notched curved BottomNavigationBar

Jan 16th, 2025
47
0
18 hours
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Dart 2.55 KB | None | 0 0
  1. import 'package:flutter/material.dart';
  2.  
  3. void main() {
  4.   runApp(MyApp());
  5. }
  6.  
  7. class MyApp extends StatelessWidget {
  8.   @override
  9.   Widget build(BuildContext context) {
  10.     return MaterialApp(
  11.       debugShowCheckedModeBanner: false,
  12.       home: MyHomePage(),
  13.     );
  14.   }
  15. }
  16.  
  17. class MyHomePage extends StatefulWidget {
  18.   @override
  19.   State<MyHomePage> createState() => _MyHomePageState();
  20. }
  21.  
  22. class _MyHomePageState extends State<MyHomePage> {
  23.   int _selectedIndex = 0;
  24.  
  25.   void _onItemTapped(int index) {
  26.     setState(() {
  27.       _selectedIndex = index;
  28.     });
  29.   }
  30.  
  31.   @override
  32.   Widget build(BuildContext context) {
  33.     return Scaffold(
  34.       body: Center(
  35.         child: Text(
  36.           'Selected tab: ${_selectedIndex + 1}',
  37.           style: TextStyle(fontSize: 20),
  38.         ),
  39.       ),
  40.       floatingActionButton: FloatingActionButton(
  41.         onPressed: () {
  42.           // FAB action
  43.         },
  44.         shape: CircleBorder(),
  45.         backgroundColor: Colors.teal,
  46.         child: Icon(
  47.           Icons.restaurant_menu,
  48.           color: Colors.white,
  49.         ),
  50.       ),
  51.       floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
  52.       bottomNavigationBar: ClipRRect(
  53.         borderRadius: BorderRadius.vertical(top: Radius.circular(32)),
  54.         child: BottomAppBar(
  55.           shape: CircularNotchedRectangle(),
  56.           notchMargin: 10.0,
  57.           child: Row(
  58.             mainAxisAlignment: MainAxisAlignment.spaceAround,
  59.             children: [
  60.               IconButton(
  61.                 icon: Icon(
  62.                   Icons.home,
  63.                   color: _selectedIndex == 0 ? Colors.teal : Colors.grey,
  64.                 ),
  65.                 onPressed: () => _onItemTapped(0),
  66.               ),
  67.               IconButton(
  68.                 icon: Icon(
  69.                   Icons.search,
  70.                   color: _selectedIndex == 1 ? Colors.teal : Colors.grey,
  71.                 ),
  72.                 onPressed: () => _onItemTapped(1),
  73.               ),
  74.               IconButton(
  75.                 icon: Icon(
  76.                   Icons.notifications,
  77.                   color: _selectedIndex == 2 ? Colors.teal : Colors.grey,
  78.                 ),
  79.                 onPressed: () => _onItemTapped(2),
  80.               ),
  81.               IconButton(
  82.                 icon: Icon(
  83.                   Icons.person,
  84.                   color: _selectedIndex == 3 ? Colors.teal : Colors.grey,
  85.                 ),
  86.                 onPressed: () => _onItemTapped(3),
  87.               ),
  88.             ],
  89.           ),
  90.         ),
  91.       ),
  92.     );
  93.   }
  94. }
  95.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement