Flutter is an open-source framework developed by Google for building user interfaces (UI) for mobile, web, and desktop applications from a single source code. It allows developers to quickly create beautiful, responsive applications using the Dart programming language.
OOP (Object-Oriented Programming) is a programming paradigm that focuses on organizing and modeling software based on objects that include data and methods that operate on that data. This approach allows developers to create structures that are more organized, modular, and easy to understand.
Flutter state management is a way to manage and update state in a Flutter application. In application development, state Refers to data that can change over time, such as user text input, authentication status, or values obtained from API calls.
2. About me
• CTO meets.indonesia
• Core Team UI/UX GDSC Unsri 2022/2023
• Member Mobile Development GDSC Unsri
2023/2024
/lib/views/aboutme.dart
LinkedIn : https://www.linkedin.com/in/kevinnaserwan
Github : https://github.com/KevinNaserwan
Instagram : @kevinnaserwan
Kevin Putrayudha Naserwan
3. ● Understanding OOP Concepts in Dart
● Dart Classes and Constructors
● Inheritance and Polymorphism in Dart
● State Management in Flutter
Outline
8. Class
Class adalah gabungan object yang terdiri
dari beberapa komponen seperti:
➢ properties
➢ setter/ getter
➢ Construction
Class juga disebut sebagai blueprint dasar
dalam membuat sebuah objek
10. Object Oriented Programming
Dart menggunakan pendekatan pemrograman berbasis
objek (OOP). Yang mana menggunakan class untuk
mencakup objek tersebut.
Abstraction : Konsep atau blueprint dari sebuah class
Polymorphism : Bisa membuat instance/objek lebih dari 1 dari suatu class
Inheritance : Pewarisan di mana suatu class dapat memiliki behaviour dan properti
yang sama dengan yang diwarisinya
11. Constructor
constructor adalah class spesial yang
bertanggung jawab menginisialisasi variabel di
dalam class. constructor tidak memiliki return
type. constructor memiliki nama yang sama
seperti nama class
jika tidak didefinisikan, maka default adalah no-
argument constructor
12. Inheritance
Inheritance (pewarisan) digunakan saat
membuat sebuah object yang memiliki
perilaku yang sama dengan object yang lain.
inheritance biasanya berupa extends class lain.
untuk di flutter kita bisa menambahkan
beberapa inheritance dari kelas lain dengan
keyword with.
13. Abstraction
Abstract class adalah sebuah blueprint class,
sehingga kita perlu untuk mengimplementasi
sebuah abstract class untuk kita override.
14. Polymorphism
Polymorphism adalah menggunakan suatu
fungsi atau attribute tertentu dari suatu base
class untuk diimplementasikan oleh children
class baik secara default maupun dimodifikasi
sesuai dengan relevansi yang digunakan oleh
masing-masing children class
15.
16. Implement vs Extends
extend digunakan pada inheritance OOP. jika
class B extends class A, maka semua properti
yang terdapat pada class A dapat diakses pada
class B.
implement digunakan ketika ingin
mengimplementasikan semua fungsi dari class
lain. implement merupakan ekivalen dari
interface pada java
extend hanya dapat digunakan pada satu class
implement dapat menggunakan banyak class
17. Overriding Methods
Overriding method adalah sebuah metode yang
dipakai untuk kelas induk atau superclass dan
nantinya akan dipakai untuk mendefinisikan
ulang dengan kelas turunan atau subclass
menggunakan nama metode serta parameter-
parameter yang sama.
Metode yang dipakai ketika Overriding dalam
bahasa pemrograman berorientasi objek ini akan
disembunyikan keberadaannya, sehingga ketika
seorang programmer akan menulis metode
yang telah di-Overriding maka metode yang
dipanggil adalah dari kelas turunan.
20. 1.Apa yang dimaksud dengan polimorfisme dalam pemrograman
berorientasi objek (OOP)?
a) Kemampuan sebuah objek untuk memperoleh sifat-sifat dari kelas
induknya
b) Kemampuan sebuah metode untuk menerima parameter dari berbagai
tipe
c) Kemampuan sebuah objek untuk menggantikan objek dari kelas lain
d) Kemampuan sebuah kelas untuk mewarisi properti dan metode dari
kelas lain
21. 1.Apa yang dimaksud dengan polimorfisme dalam pemrograman
berorientasi objek (OOP)?
a) Kemampuan sebuah objek untuk memperoleh sifat-sifat dari kelas
induknya
b) Kemampuan sebuah metode untuk menerima parameter dari berbagai
tipe
c) Kemampuan sebuah objek untuk menggantikan objek dari kelas lain
d) Kemampuan sebuah kelas untuk mewarisi properti dan metode dari
kelas lain
22. 2.Dalam konsep pewarisan (inheritance) dalam OOP, apa yang
dimaksud dengan kelas turunan (subclass)?
a) Kelas yang tidak memiliki metode
b) Kelas yang mewarisi properti dan metode dari kelas lain
c) Kelas yang hanya memiliki satu metode
d) Kelas yang tersembunyi dari kelas utama
23. 2.Dalam konsep pewarisan (inheritance) dalam OOP, apa yang
dimaksud dengan kelas turunan (subclass)?
a) Kelas yang tidak memiliki metode
b) Kelas yang mewarisi properti dan metode dari kelas lain
c) Kelas yang hanya memiliki satu metode
d) Kelas yang tersembunyi dari kelas utama
25. What Is State?
- Data / Informasi yang kamu butuhkan untuk membangun UI kapan saja.
Misalnya ketika kamu berpindah ke haaman lain, otomatis kamu akan
merubbah state, kemudian mentrigger untuk mengubah tampilan user
interface. Dan UI akan me-rebuild dari awal.
26. Semua widget berasal dari StatelessWidget atau StatefulWidget.
StatelessWidget tidak memiliki informasi state apa pun tetapi mungkin
berisi widget yang berasal dari StatefulWidget.
StatefulWidget membuat aplikasi memiliki sifat dinamis melalui
perilaku interaktif widget dan status berubah selama interaksi.
contoh, mengetuk tombol FAB akan menambah nilai counter dan
Flutter akan secara otomatis merender ulang widget menggunakan nilai
yang baru
Stateless vs Stateful
27. Stateless vs Stateful
Stateless:
Hanya memiliki build() method
Context hanya bisa dipanggil di dalam fungsi
build()
Build method hanya dijalankan satu kali
Tidak bisa di render ulang ketika terjadi
perubahan informasi dari dalam widget
Dapat berubah ketika input/masukan widget
berubah
Tidak memiliki widget
Contoh: Text, Icon, IconButton
Stateful
Memiliki build(), initstate(), dispose() dan
method lain
Context dapat diakses dari fungsi apapun
Widget dapat di-render ulang, contoh
dengan menggunakan setState() saat
internal data berubah
Contoh: Checkbox, Radio, Slider, InkWell,
Form, dan TextField
30. State Management
- Flutter termasuk ke dalam sebuah tools yang fokus utamanya adalah
menampilkan state dari widget yang berupa stateless atau stateful.
- Tetapi belum menyelesaikan permasalahan terkait cara management dan
arsitektur dari proyek aplikasi seperti framework lain pada umumnya
- State management adalah sebuah cara untuk mengatur data / state,
memisahkan antara logic dan view, agar logic tersebut dapat digunakan ulang,
juga dapat digunakan untuk membuat arsitektur serta sharing state antar
halaman.
31. State Management
Provider
State management berdasarkan InheritedWidget
untuk penggunaan yang sederhana dan mudah.
package ini juga direkomendasikan oleh Flutter Team
BLoC
state management berbasis stream yang juga
memberikan pengalaman dalam mengembangkan
arsitektur design, sperti Presentation, Bussiness
Logic, Data
RiverPod
Hampir sama dengan Provider, namun dilakukan
implementasi ulang pada InheritedWidget
terhadap hal yang belum dimiliki Provider
GetX
popularitasnya cepat karena mendukung state
management, injection, route management, i10n, dll
setState
pendekatan low-level yang
dapat digunakan untuk widget
yang spesifik
Lainnya
Redux
Mobx
dll