Tutorial Flutter : Widget yang Sering Digunakan Pada Flutter

Aplikasi Flutter adalah kumpulan dari berbagai widget. Pada tutorial kali ini, kita akan membahas widget-widget yang biasa digunakan saat membangun aplikasi Flutter. Beberapa widget yang umum digunakan adalah :

  • Rows and Columns
  • Text
  • Scaffold and AppBar
  • Raised Button
  • Alert Dialog
  • Box Constraints
  • Container
  • Image
  • Size, Margin, and Padding
  • ListView
  • Floating Action Button

Container Widget

Kita akan membuat aplikasi flutter dari awal. Apabila Anda menggunakan Android Studio, hapus seluruh baris kode di main.dart dan akan kita buat yang baru.

Seperti pada tutorial sebelumnya, kita akan mengimport package material dart, dan memanggil class MaterialApp yang berisi Home() widget. Home widget ini kita buat di folder app_screens dan diberi nama home.dart. Di dalam file ini, kita membuat widget Home yang import material package, dan me-return Container widget yang memiliki property alignment center dan color OrangeAccent. Tidak lupa kita beri Text “Flight” pada text widget.

main.dart

home.dart

Jalankan aplikasi, maka hasilnya akan seperti ini :

Aplikasi Flight Flutter 1

Property Width dan Height pada Container Widget

Untuk menambahkan lebar dan tinggi, kita tidak bisa serta merta menambahkan property width and height, namun kita harus memberikan widget lain sebagai parent dari Container widget. Untuk keperluan ini, kita menggunakan Center widget, kemudian tambahkan property width dan heightnya, sehingga home.dart menjadi seperti ini :

home.dart

Dan ketika dijalankan :

Aplikasi Flight Flutter 2

Margin dan Padding

Aplikasi Flight Flutter 3

Margin dan Padding yang selama ini kita kenal melalui CSS, pada Flutter kita menggunakan EdgeInsets. Jika semua sisinya valuenya sama, bisa gunakan EdgeInsets.all(15.0). Jika hanya beberapa sisi saja yang akan diberikan margin atau padding, gunakan EdgeInsets.only(top:15.0, left:35.0).

home.dart

Hasilnya :

Aplikasi Flight Flutter 4

Memberikan Styling pada Text Widget

Aplikasi yang sudah kita buat di atas terdapat dua buah garis di bawah tulisan. Dua garis ini adalah hasil dari property style dan TextDecoration pada TextStyle widget. Kita akan menghapus dua garis ini dan mengubah fontSize dengan modifikasi pada home.dart.

home.dart

Flutter TextStyle Widget

Menambahkan Font Family

Untuk menambahkan font, kita harus mendownload nya terlebih dahulu, dan beritahu perubahan tersebut ke dalam file pubspec.yaml.

Download font yang Anda inginkan di fonts.google.com . Setelah download fonts yang diinginkan, unzip file nya dan copy fonts yang ada disana, bisa semua atau sebagian saja. Buat folder fonts di dalam folder aplikasi flutter, dan paste font yang barusan kita copy ke dalam folder tersebut.

Selanjutnya, beritahu penambahan fonts tersebut pada file pubspec.yaml. File ini adalah file yang mengandung file dependencies dan metadata. Ketika kita membuka file ini, sudah terdapat fonts section yang di comment. Silahkan uncomment bagian fonts tersebut.

Pada pubspec.yaml, indentation sangatlah penting. Pastikan memberikan indentasi dua spasi dari ujung kiri file, kalau tidak pasti akan error.

Setiap kali mengubah file pubspec.yaml, kita harus mengklik Get Dependencies supaya perubahan yang kita lakukan bisa berlaku. Selain klik, bisa juga dengan perintah ‘flutter packages get’.

Selanjutnya, panggil fontFamily di dalam home.dart file dan berikan beberapa fontStyle :

Aplikasi Flutter Flight

Rows and Columns Widget

Kali ini kita akan mencoba untuk mengerti bagaimana caranya menaruh widget pada Row dan Column widget, dan kita juga akan belajar apa itu expanded widget.

Flutter Application Row and Column Widget

Row Widget

Modifikasi home.dart, kita akan membuat Row widget yang mempunyai dua children, yaitu widget Text dan widget Text. Kalau tulisan terlalu panjang, maka tulisan yang tertera di mobile phone akan terpotong. Untuk mengatasi hal ini, kita akan menggunakan Expanded widget.

Note: Apabila kita menggunakan Android Studio, terdapat kunci keyboard untuk merapikan baris kode, yaitu Alt + Cmd + L pada MacOS atau Alt + Ctrl + L 

home.dart

Flutter Application Expanded Widget

Untuk merapihkan agar tulisan pada kolom 1 dan kolom 2 tidak berdempetan, berikan Expanded widget juga pada Text widget kolom pertama. Selanjutnya kita rapihkan dengan mengecilkan ukuran font pada kolom dua dan hilangkan italic.

Column Widget

Selanjutnya kita akan menggunakan Column widget, yang akan memiliki children widget-widget yang saling bertumpuk. Di tumpukan paling atas kita akan menaruh Row widget yang sudah kita buat sebelumnya. Widget berikutnya, copy dan paste Row widget dan ganti tulisannya. Tambahkan padding pada container supaya tulisan tidak mepet di atas layar,

Flutter Application Expanded Widget 2

Flutter Image Assets

Kita akan belajar bagaimana menggunakan image pada aplikasi flutter yang kita buat dengan cara load image tersebut dari asset. Asset adalah resource yang bisa kita tambahkan di folder local.

Pertama-tama, buatlah folder baru dan beri nama images, dan taruh gambar yang kita inginkan di folder tersebut. Selanjutnya buka pubspec.yaml file dan registrasi image tersebut. Karena ada perubahan pada pubspec file, kita klik juga Get Dependencies.

Kita akan menampilkan image di baris ketiga dari Column widget. Sebelumnya di baris paling bawah, buat class baru yaitu FlightImageAsset.

pubspec.yaml

home.dart

Flutter Application Image Asset

Raised Button and Alert Dialog Widgets

Raised Button

Selanjutnya, kita akan membuat tombol Book Your Flight sebagai row ke empat pada aplikasi. Kita membuat class baru yaitu FlightBookButton untuk mengakomodir hal ini. Class ini menghasilkan Container widget yang berisi Raised Button sebagai childnya, widget RaisedButton ini memiliki Text widget sebagai childnya. Tambahkan sedikit margin, panjang dan lebar button, berikan warna putih untuk tulisan pada button.

home.dart

FLutter Application Book Your Flight 2

Alert Dialog

Selanjutnya, kita akan memberikan event ketika tombol tersebut di tekan, dengan memberikan fungsi pada onPressed property milik RaisedButton widget. Kita akan memberikan widget AlertDialog ketika button di tekan.

home.dart

FLutter Application Book Your Flight 4

ListView

Selanjutnya kita akan membuat Simple ListView. Di bagian ini kita akan mempelajari beberapa widget seperti Scaffold, ListView, ListTile, Icon, dengan property seperti leading, trailing, title, subtitle, onTap. ListView ini dimunculkan ketika aplikasi dibuka, sehingga kita akan melakukan modifikasi pada main.dart.

Kita menggunakan widget Scaffold supaya apabila datanya panjang, tidak akan terjadi overflow.

main.dart

Flutter ListView Widget

Tambahkan AppBar pada scaffold supaya lebih rapi. Kita juga bisa menambahkan Container maupun text di dalam ListView :

main.dart

Flutter ListView Icon

LongList Widget

ListView widget yang kita bahas sebelumnya tidak cocok digunakan untuk data yang panjang, karena tidak memory efficient. Karena itu, kita dapat menggunakan widget lain yaitu LongList widget. Langkah langkahnya adalah menyiapkan sumber data, konversi data tersebut menjadi widget, dan yang terakhir adalah menjadikan array of widgets itu menjadi child dari ListView.

Kita akan membuat 1000 data di main.dart :

main.dart

Long List widget Flutter

Floating Action Button and Snackbar Widget

Floating Action Button

Kita akan menaruh Floating Action Button di dalam aplikasi LongList yang sudah kita buat. Taruh FloatingActionButton widget di dalam Scaffold widget. Floating Action Button akan muncul di sebelah kanan bawah. Tulisan pada tooltip akan muncul ketika kita menahan tombol FAB :

main.dart

Floating Action Button Flutter

SnackBar Widget

Pertama – tama, kita akan membuat function untuk menampilkan Snackbar, modifikasi beberapa baris kode dari getListView, jalankan program dan seperti ini hasilnya :

main.dart

Flutter Snack Bar Widget

Selanjutnya kita akan coba menambahkan action Undo pada snackbar.

Snackbar Widget dan Floating Action Button selalu menjadi bagian dari Scaffold Widget.

Flutter Snackbar Widget

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.