11.Flutter - Builder


Builder


Jika kita melihat dokumentasi flutter kelas builder, kita akan mendapatkan penjelasan singkat sebagai beriukt:

Builder adalah "A platonic widget that call a closure to obtain its child widget", cukup membigungkan bukan?, mari kita beranjak ke dunia filsafat, menurut sumber dari wikipedia (https://id.wikipedia.org/wiki/Platonisme) Platonisme, sebagai kata benda khusus, adalah filsafat Plato atau nama dari sistem-sistem filsafat yang dianggap sebagai turunan langsung dari filsafat Plato. Dalam lingkup makna yang lebih sempit, platonisme, sebagai kata benda umum (dengan huruf "p" kecil), adalah sebutan bagi filsafat yang mengakui keberadaan objek-objek abstrak. Kata kunci yang mau kita pahami disini adalah objek-objek abstrak, dengan demikian pengertian builder dapat kita artikan sebagai berikut: "Widget abstrak yang memanggil closure untuk menghasilkan child widget".

Closure sendiri hanyalah nama lain dari fungsi lambda, atau anonymous method, jadi builder adalah lambda yang mirip dengan metode build dari Widget, kita dapat memberikan argumen bertipe BuildContext atau variabel lain yang diperlukan, dan tentu saja akan mengembalikan Widget.

Kenapa kita perlu builder?
Hal yang perlu kita ingat adalah pada Flutter setiap widget mempunyai metode build yang menerima paramter bertipe BuildContext


Widget build(BuildContext context) {...}

Harus kita ingat bahwa objek context yang diberikan ke metode build pada widget dilakukan otomatis oleh Flutter, oleh karena hal tersebut ditangani secara otomatis oleh framework Flutter, tidak mungkin widget tersebut mempunyai contsructor atau fungsi (selain dari bulid) yang menerima paramter context, jika kita ingin memberikan paramter context yang khusus ke child widget, kita tidak akan bisa melakukannya, jadi bagaimana jika kita ingin memberikan objek context yang spesifik (khusus)? disinlah fungsi dari kelas Builder, tujuan dari kelas Builder secara sederhana adalah build dan return child Widget, kelas Builder mengizinkan kita untuk melewatkan objek context spesifik ke childnya, kenapa kita perlu melewatkan objek context spesifik? perhatikan contoh berikut:


kode tersebut tidak akan bekerja. fungsi Scaffold.of(context) tidak akan menemukan Scaffold dikarenakan sebagai berikut:
  1. Widget dari Scaffold belum selesai dibuat (diciptakan)
  2. Object context yang dilewatkan dari fungsi build mengacu ke parent widget, bukan dari widget Scaffold.
Jadi bagaimana kita memastikan bahwa object context tersebut adalah context dari widget Scaffold ? kita menggunakan kelas Builder untuk melewatkan context dari widget Scaffold:

Hal yang perlu diingat dari constructor kelas Builder adalah:
Builder({Key key, @required WidgetBuilder builder})

menciptakan widget dengan mendelegasikan metode buildnya ke anonymous function melalui constructornya, jadi di code tersebut :


Builder(builder: (BuildContext context){ ... });


jadi pada anonymous function (closure) tersebut terdapat:
1. Parameter BuildContext
2. Build dan return child widget berdasarkan context yang kita berikan.

Kesimpulan dengan bahasa yang lebih sederhana kira-kira seperti ini, Builder digunakan untuk memberikan object context yang tepat, builder juga memastikan objek context yang akan digunakan sudah diciptakan (dibuat).

Full Source Code:

11.Flutter - Builder 11.Flutter - Builder Reviewed by jc on October 28, 2019 Rating: 5

No comments:

Powered by Blogger.