Jika kamu sedang belajar flutter, tentu kita harus terbiasa dengan boilerplate dari flutter seperti Navigator.of(context)
atau context, builder [...]
yang mungkin bagi sebagian dari kita merasa kurang nyaman dalam penggunaannya. Saya tidak mengatakan kalau itu buruk, syntax flutter itu keren dan cukup mudah untuk dimengerti namun apabila boilerplate yang panjang tadi dapat kita buat lebih praktis dan mudah dibaca kenapa tidak ?
Boilerplate adalah unit penulisan yang dapat digunakan berulang tanpa atau sedikit perubahan. Ini sering digunakan ketika mengacu pada bahasa yang dianggap verbose, yaitu programmer harus menulis banyak kode untuk melakukan pekerjaan minimal.
sumber : freecodecamp.org
Untuk menyederhanakan hal tesebut dapat kita lakukan dengan menggunakan ekosistem dari GetX. Getx sendiri merupakan salah satu package yang masuk dalam 3 besar package favorite di flutter.
GetX adalah micro-framework yang bertujuan untuk meminimalkan boilerplate yang dikombinasikan dengan sintaks yang rapi dan pendekatan yang sederhana. Saat mengembangkan aplikasi flutter dengan GetX, percaya semuanya akan terasa lebih praktis.
Url Package : https://pub.dev/packages/get
Daftar Isi
Mengapa GetX Spesial ?
Package GetX begitu spesial karena fiture yang ditawarkan sangat menarik. Memiliki tiga (3) pilar utama yaitu sebagai state management, route management dan Dependency management.
Route Management
Jika sebelumnya kamu pernah membaca artikel yang berjudul “Membuat Navigasi Routing di Flutter” maka dengan menggunakan getX membuat route menjadi sangat sangat sangat mudah.
Dapat kita lihat pada gambar diatas, perbedaan sebelum dan setelah menggunakan getX. Sangat sederhana dan mudah. Tidak lagi memerlukan context dan lainnya.
State Management
Jika kamu pernah belajar atau mengenal BLOC, mobx dan redux, maka getX tidak kalah powerfull nya dengan mereka.
Fokus utama dari GetX adalah pada performa yang optimal. Biasanya, kita harus memilih pengontrol mana yang akan dibuang (dispose) dan membuangnya secara manual. Dengan GetX, justru sebaliknya. Kita harus memilih mana yang akan disimpan dalam memori karena akan dibuang secara otomatis. Menghemat memori, dan baris kode.
GetX menawarkan tiga tipe state management yaitu
- Reactive : selalu mengikuti perubahan apapun yang terjadi di state
- On update : konsepnya seperti provider dan listener dimana saat ada aksi update maka akan merebuild widget
- gabungan reactive dan on update
GetBuilder memiliki performa paling cepat dan penggunaan memori yang rendah, tetapi tidak reactive. Sedangkan Obx bisa menjadi pilihan reactive state management bagi kamu yang suka dengan syntax yang simple dan sederhana.
Penjelasan lebih detail mengenai State Management menggunakan GetX akan dihabas dalam artikel terpisah.
Dependency management
GetX memiliki pengelola dependensi yang sederhana yang memungkinkan kita mengambil class yang sama dengan Bloc atau Controller Anda hanya dengan 1 baris kode, tanpa provider context, tanpa inheritedWidget
Pendekatan GetX cukup sederhana. Alih-alih membuat sebuah instance secara langsung, kita membungkusnya dengan sebuah instance Get (class), seperti ini:
Get.put(Controller());
Get.put
membuat dependensi tersedia untuk semua child route. Jadi, jika kita perlu mengakses instance yang sama di beberapa class lain, maka kita dapat melakukannya dengan menggunakan Get.find
.
class MainPage extends StatelessWidget {
Controller controller = Get.put(Controller());
}
class SecondPage extends StatelessWidget {
Controller controller = Get.find();
}
Bagaimana ? masih kurang menarik ? okay lanjut ke fiture lainnya
Ganti Tema hanya dengan 1 Baris kode
Membuat dynamic theme juga menjadi mudah dengan GetX, hanya dengan satu baris kode menggunakan Get.changeTheme
dan selesai
Get.changeTheme(ThemeData.light());
atau bisa juga dengan
Get.changeThemeMode(ThemeMode.dark);
Membuat Multi Bahasa dan Locales
Kita juga dapat membuat aplikasi multi bahasa dengan menggunakan class translations seperti dibawah ini
import 'package:get/get.dart';
class Messages extends Translations {
@override
Map<String, Map<String, String>> get keys => {
'en_US': {
'hello': 'Hello World',
},
'id_ID': {
'hello': 'Hallo Dunia',
}
};
}
Set locale
return GetMaterialApp(
translations: Messages(), // your translations
locale: Locale('en', 'US'), // translations will be displayed in that locale
fallbackLocale: Locale('id', 'ID'), // set default jika locale yang dipilih tidak valid.
);
menampilkan text
Text('hello'.tr);
GetX Selalu Up to date
Pernahkah terkena issue package tidak kompetible sesaat setelah update flutter ? Berapa kali suatu versi package tidak kompatibel dengan versi lainnya, karena yang satu sangat tergantung pada satu versi, dan yang lainnya di versi lain? Ini juga bukan masalah menggunakan Get, karena semuanya ada dalam paket yang sama dan sepenuhnya kompatibel.
Kurang lebih seperti itulah yang dijanjikan oleh GetX bahwa package mereka akan selalu kompatible dengan versi flutter saat ini dan yang akan datang
Penutupan
Begitu banyaknya kemampuan dan kemudahan yang ditawarkan package GetX. Bagi saya pribadi, sekali kita membangun aplikasi flutter menggunakan ekosistem GetX mungkin akan mendorong untuk selalu menggunakannya dan sulit berpaling kelain hati. setidaknya untuk saat ini 🙂
Sekian dari ulasan kali ini tentang pengenalan package GetX, semoga artikel ini dapat menambah wawasan dan pengetahuan yang berguna bagi anda khususnya dalam proses pembuatan aplikasi menggunakan Flutter.