Okee selamat siang, pagi, sore atau malam teman-teman mimin akan mengasih tahu ini caranya buat bottomNavigationBar dengan FAB ataupun lebih dikenal sebagai floatingActionButton. Oke, sekarang buka proyek teman-teman lalu di main.dart
import 'package:bottomnavigasi/home.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Home(),
);
}
}
Halaman pertama kali yang akan muncul adalah halaman dari kelas Home(). Lalu tambahkan file home.dart di folder libb nya
import 'package:bottomnavigasi/chat.dart';
import 'package:bottomnavigasi/dashboard.dart';
import 'package:bottomnavigasi/profile.dart';
import 'package:bottomnavigasi/setting.dart';
import 'package:flutter/material.dart';
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
// Properties & Variables needed
int currentTab = 0; // to keep track of active tab index
final List<Widget> screens = [
Dashboard(),
Chat(),
Profile(),
Setting(),
]; // to store nested tabs
final PageStorageBucket bucket = PageStorageBucket();
Widget currentScreen = Dashboard(); // Our first view in viewport
@override
Widget build(BuildContext context) {
return Scaffold(
body: PageStorage(
child: currentScreen,
bucket: bucket,
),
floatingActionButton: FloatingActionButton(
// foregroundColor: Colors.blue,//warna icon gambar
// focusColor: Colors.green,
// hoverColor: Colors.orangeAccent,
backgroundColor: Colors.orangeAccent,
child: Icon(Icons.search),
onPressed: () {},
),
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
bottomNavigationBar: BottomAppBar(
color: Colors.blue,
shape: CircularNotchedRectangle(),
notchMargin: 10, //buat melengkungnya
child: Container(
height: 65,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
MaterialButton(
minWidth: 40,
onPressed: () {
setState(() {
currentScreen =
Dashboard(); // if user taps on this dashboard tab will be active
currentTab = 0;
});
},
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(
Icons.dashboard,
color: currentTab == 0
? Colors.orangeAccent
: Colors.white,
),
Text(
'Dashboard',
style: TextStyle(
color: currentTab == 0
? Colors.orangeAccent
: Colors.white,
),
),
],
),
),
MaterialButton(
minWidth: 40,
onPressed: () {
setState(() {
currentScreen =
Chat(); // if user taps on this dashboard tab will be active
currentTab = 1;
});
},
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(
Icons.chat,
color: currentTab == 1
? Colors.orangeAccent
: Colors.white,
),
Text(
'Chat',
style: TextStyle(
color: currentTab == 1
? Colors.orangeAccent
: Colors.white,
),
),
],
),
)
],
),
// Right Tab bar icons
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
MaterialButton(
minWidth: 40,
onPressed: () {
setState(() {
currentScreen =
Profile(); // if user taps on this dashboard tab will be active
currentTab = 2;
});
},
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(
Icons.dashboard,
color: currentTab == 2
? Colors.orangeAccent
: Colors.white,
),
Text(
'Profile',
style: TextStyle(
color: currentTab == 2
? Colors.orangeAccent
: Colors.white,
),
),
],
),
),
MaterialButton(
minWidth: 40,
onPressed: () {
setState(() {
currentScreen =
Setting(); // if user taps on this dashboard tab will be active
currentTab = 3;
});
},
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(
Icons.chat,
color: currentTab == 3
? Colors.orangeAccent
: Colors.white,
),
Text(
'Settings',
style: TextStyle(
color: currentTab == 3
? Colors.orangeAccent
: Colors.white,
),
),
],
),
)
],
)
],
),
),
),
);
}
}
Berdasarkan kodingan diatas, akan ada 5 menu yang ada di BottomAppbar yang di panggil berdasarkan nama kelas nya dan juga FAB itu sendiri
Sekarang untuk menampilkan menudashboard nya tambahkan file dashboard.dart
import 'package:flutter/material.dart';
class Dashboard extends StatefulWidget {
@override
_DashboardState createState() => _DashboardState();
}
class _DashboardState extends State<Dashboard> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(child: Text("Dashboard")),
);
}
}
Untuk menampilkan menu chat buat chat.dart
import 'package:flutter/material.dart';
class Chat extends StatefulWidget {
@override
_ChatState createState() => _ChatState();
}
class _ChatState extends State<Chat> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(child: Text('Chat')),
);
}
}
Untuk profil.dart
import 'package:flutter/material.dart';
class Profile extends StatefulWidget {
@override
_ProfileState createState() => _ProfileState();
}
class _ProfileState extends State<Profile> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(child: Text('Profile')),
);
}
}
untuk setting.dart
import 'package:flutter/material.dart';
class Setting extends StatefulWidget {
@override
_SettingState createState() => _SettingState();
}
class _SettingState extends State<Setting> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(child: Text('Setting')),
);
}
}
Nahh untuk hasilnya akan seperti ini

Silahkan di coba dan di modifikasi, salamm