Flutter GetX : Package Wajib untuk Flutter Developer

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

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.

getx route management

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 benchmark
sumber : https://github.com/jonataslaw/benchmarks

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
getx state management

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);
dynamic theme flutter dengan

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.

Default image
Omadi Jaya
Fullstack developer, Software Engineer @ Depok, Indonesia

Leave a Reply