Drawer
Drawer adalah menu yang yang berada di sebalah kiri layar android. Biasanya drawer akan muncul saat kita menekan icon menu yang berada di kiri atas appbar. Sedangkan di website, drawer bisa kita sebut juga dengan sidebar menu. Untuk membuat sidebar menu di flutter caranya cukup mudah. Berikut ini saya berikan gambar drawer yang akan kita buat beserta istilah-istilah di dalamnya.| 
           | 
      
| Struktur Drawable yang Dibuat | 
    Ok saya kira gambar di atas sudah cukup jelas menggambarkan apa yang akan
    kita buat pada tutorial kali ini. Di tutorial kali ini juga kita akan
    belajar beberapa widget dasar seperti image network, list view, text, dan
    list tile. Dan untuk hasil akhirnya kalian bisa langsung scroll ke bagian
    bawah pada artikel ini.
  
  Cara Membuat Drawer atau Sidebar Menu di Flutter
1. Pertama silahkan kalian buat project flutter terlebih dahulu. Buka visual studio code → tekan ctrl + shift + P → create new flutter project → pilih folder → dan beri nama project "latihan_drawer_flutter".
    2. Buka file main.dart. Lalu ganti script di dalamnya dengan
    script yang ada di bawah ini. Untuk penjelasan, sudah saya tulis di dalam
    script dan di dalam tabel penjelas.
  
      
    import 'package:flutter/material.dart';
    void main(){
      runApp(
        MaterialApp(
          title: "Latihan Drawable Flutter", 
          //menghilangkan debug banner
          debugShowCheckedModeBanner: false, 
          home: HomePage(),
        )
      );
    }
    
    class HomePage extends StatefulWidget {
      const HomePage({ Key? key }) : super(key: key);
    
      @override
      _HomePageState createState() => _HomePageState();
    }
    
    class _HomePageState extends State<HomePage> {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text("Flutter Drawer"),
          ),
          body: Center(
            child: Text(
              "Ini halaman utama, kalian bebas memberikan widget"
            ),
          ),
          //memberikan button garis tiga disebelah kiri appbar
          //jika ditekan akan menjalankan widget builddrawer
          drawer: _buildDrawer(), 
        );
      }
    }
    
    //widget ini adalah isi dari sidebar atau drawer
    Widget _buildDrawer() {
      return SizedBox(
        //membuat menu drawer
        child: Drawer(
          //membuat list, 
          //list digunakan untuk melakukan scrolling jika datanya terlalu panjang
          child: ListView(
            padding: EdgeInsets.zero,
            //di dalam listview ini terdapat beberapa widget drawable
            children: [
              UserAccountsDrawerHeader(
                //membuat gambar profil
                currentAccountPicture: Image(
                  image: NetworkImage("https://cdn.pixabay.com/photo/2015/10/05/22/37/blank-profile-picture-973460_960_720.png")
                ),
                //membuat nama akun
                accountName: Text("Sahretech"), 
                //membuat nama email
                accountEmail: Text("ig: @sahretech"),
                //memberikan background
                decoration: BoxDecoration(
                  image: DecorationImage(
                    image: NetworkImage("https://cdn.pixabay.com/photo/2016/04/24/20/52/laundry-1350593_960_720.jpg"), 
                    fit: BoxFit.cover
                  )
                ),
              ), 
              //membuat list menu
              ListTile( leading: Icon(Icons.home), title: Text("Beranda"), onTap: (){},),
              ListTile( leading: Icon(Icons.people), title: Text("Pegawai"), onTap: (){},), 
              ListTile( leading: Icon(Icons.money), title: Text("Transaksi"), onTap: (){},), 
              Divider(),
              ListTile( leading: Icon(Icons.emoji_emotions), title: Text("Profil"), onTap: (){},), 
              ListTile( leading: Icon(Icons.info), title: Text("Tentang"), onTap: (){},), 
            ],
          ),
        ),
      );
    }
    Tabel Penjelas
| # | Syntax/Script | Keterangan | 
| 1 | drawer: ..... | Memberikan button berbentuk icon garis tiga di pojok kiri atas. Kalian bisa mengisinya dengan widget drawer, jika ditekan maka akan memunculkan drawer | 
| 2 | Widget _buildDrawer() { ..... } | Membuat custom widget, widget ini dapat kita gunakan berkali-kali sehingga lebih hemat waktu dalam penkodingan | 
| 3 | Drawer(.....) | Untuk membuat drawer kita perlu memasang widget ini. Lalu di dalamnya ada banyak widget yang dapat kita gunakan sesuai selera | 
| 4 | ListView(.....) | Listview adalah pilihan opsional, tapi digunakan jika menu yang dibuat melebihi ukuran layar android Pembahasan list view bisa kalian di tutorial ini https://www.sahretech.com/2022/02/cara-menggunakan-list-view-builder-di.html | 
| 5 | UserAccountsDrawerHeader(.....) | Untuk membuat bagian header drawer terdapat beberapa properti | 
| 6 | currentAccountPicture: | Untuk membuat gambar profil | 
| 7 | AccountName: | Untuk memberikan nama akun | 
| 8 | AccountEmail: | Untuk memberikan nama email | 
| 9 | decoration: BoxDecoration(.....) | Digunakan untuk memberikan dekorasi pada draser header, dalam hal ini saya memberikan gambar latar | 
| 10 | ListTile(.....) | Membuat list dengan mudah, kita bisa menambahkan icon, teks, sub teks, dan memberikan aksi onTap: Pembahasan listTile bisa kalian di tutorial ini https://www.sahretech.com/2022/02/menggunakan-list-view-builder-get-data.html | 
    3. Ok, semua step sudah kita kerjakan, sekarang waktunya melakukan
    uji coba. Silahkan jalankan project kalian masing-masing, jika berhasil maka
    tampilannya akan tampak seperti gambar di bawah ini.
  
  | 
           | 
      
| Hasil Akhir | 
Keren!, sekarang kalian sudah bisa membuat drawer, tinggal lakukan improvisasi pada apa yang sudah kalian pelajari dengan menggabungkan widget-widget yang ada di flutter. Kunjungi artikel tutorial flutter lainnya di link berikut ini.
Ok sekian dari saya kali ini tentang cara membuat sidebar menu atau drawer pada flutter. Semoga bermanfaat, jika ada pertanyaan silahkan tanya langsung di kolom komentar di bawah ini atau tanya langsung di fanspage sahretech. Sekian dan terima kasih.
Keren
ReplyDelete