0% menganggap dokumen ini bermanfaat (0 suara)
32 tayangan23 halaman

Catatan Tutorial Flutter

Dokumen ini memberikan pengenalan tentang Flutter dan bahasa pemrograman Dart, termasuk struktur dasar pemrograman Dart, tipe data, dan fungsi. Flutter adalah alat untuk membuat aplikasi lintas platform menggunakan Dart, yang memiliki sintaks mirip dengan Java dan C#. Selain itu, dokumen ini juga mencakup contoh penggunaan variabel, fungsi, kondisi, dan perulangan dalam Dart.

Diunggah oleh

Dee Rend
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
32 tayangan23 halaman

Catatan Tutorial Flutter

Dokumen ini memberikan pengenalan tentang Flutter dan bahasa pemrograman Dart, termasuk struktur dasar pemrograman Dart, tipe data, dan fungsi. Flutter adalah alat untuk membuat aplikasi lintas platform menggunakan Dart, yang memiliki sintaks mirip dengan Java dan C#. Selain itu, dokumen ini juga mencakup contoh penggunaan variabel, fungsi, kondisi, dan perulangan dalam Dart.

Diunggah oleh

Dee Rend
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd

Flutter 01.

Pengenalan Flutter

Flutter?

Flutter merupakan sebuah “tools” untuk membuat multi aplikasi (android, ios, website, smart tv, dll)
dalam sekali program/coding.

Native cross-platform

Flutter?

SDK(mesin)

Untuk compile code ke mesin native masing-masing platform

Gunanya untuk code-code yang sudah dibuat akan di compile ke masing-masing bahasa pemrograman
seperti android, ios, dll.

Framework
Library
Untuk menggunakan fungsi-fungsi/package yang disediakan flutter.

Disebut sebagai kerangka kerja, di dalam flutter tersedia banyak fungsi/package yang tersedia.

Dalam Flutter menggunakan satu bahasa pemrograman yaitu DART.

Bahasa DART itu sendiri dikembangkan oleh Google yang basis bahasnya object oriented, syntaxnya
mirip dengan bahasa JAVAScript, JAVA, C#.

Flutter
Framework Kerangka Kerja

Flutter DART
Bahasanya
Install Flutter?

[Link]

Yang dibutuhkan:

Flutter SDK

Android Studio

Pilih plugin: Install Flutter dan Dart

Xcode (Mac OS) (Sebagai Editor)

VS Code (Sebagai Editor)

Pilih Extention: Install Flutter dan Dart


Flutter 02. Dart Basic

Buka [Link] di browser masing-masing.

Struktur dasar pemrograman Dart pada dasarnya mengikuti aturan yang mirip dengan bahasa
pemrograman lain yang berorientasi objek, seperti Java atau C#. Dart adalah bahasa yang dirancang oleh
Google dan sering digunakan untuk membangun aplikasi mobile menggunakan Flutter. Untuk memahami
struktur dasar kode Dart, berikut adalah beberapa elemen utama:

1. Komentar

Komentar digunakan untuk mendokumentasikan kode atau menjelaskan fungsi-fungsi tertentu di dalam
kode. Komentar ini tidak akan dijalankan oleh program.

 Komentar satu baris: menggunakan //.

 Komentar multi-baris: menggunakan /* */.

 Komentar dokumentasi: menggunakan /// untuk mendokumentasikan fungsi atau kelas.

// Ini adalah komentar satu baris

/*

Ini adalah komentar multi-baris

*/
/// Ini adalah komentar dokumentasi

2. Fungsi main()

Fungsi main() adalah titik masuk utama dari aplikasi Dart. Setiap program Dart harus memiliki fungsi
main() untuk bisa dijalankan.

void main() {

print('Hello, Dart!');

Pada contoh ini, program akan mencetak "Hello, Dart!" di konsol.

3. Variabel dan Tipe Data

Dart memiliki tipe data statik dan dinamis. Variabel bisa dideklarasikan dengan tipe yang spesifik atau
tanpa tipe eksplisit menggunakan kata kunci var atau dynamic.

 Deklarasi variabel dengan tipe eksplisit:

int number = 10;

String name = 'John Doe';

bool isActive = true;

Deklarasi variabel dengan var (Dart akan menentukan tipe secara otomatis):

var age = 25; // Dart akan mengetahui bahwa ini tipe int

Deklarasi dengan dynamic (tipe bisa berubah):

dynamic variable = 'Hello';

variable = 10; // Ini diizinkan karena dynamic bisa berubah tipe

4. Fungsi

Fungsi digunakan untuk memecah logika program menjadi bagian-bagian yang terpisah. Fungsi bisa
memiliki parameter dan bisa mengembalikan nilai.

 Fungsi tanpa nilai balik:

void greet() {

print('Hello, World!');
}

Fungsi dengan nilai balik:

int add(int a, int b) {

return a + b;

Fungsi dengan parameter opsional:

void greet([String name = 'Guest']) {

print('Hello, $name!');

5. Kondisi (if-else)

Kondisi digunakan untuk mengatur alur eksekusi berdasarkan nilai boolean tertentu.

void main() {

int age = 20;

if (age >= 18) {

print('Dewasa');

} else {

print('Belum dewasa');

6. Perulangan (looping)

Dart mendukung berbagai macam perulangan seperti for, while, dan do-while.

 For loop:

for (int i = 0; i < 5; i++) {

print(i);

}
While loop:

int i = 0;

while (i < 5) {

print(i);

i++;

Do-while loop:

int i = 0;

do {

print(i);

i++;

} while (i < 5);

7. List dan Map

Dart mendukung struktur data seperti List (array) dan Map (dictionary).

 List:

List<int> numbers = [1, 2, 3, 4, 5];

print(numbers[0]); // Output: 1

Map:

Map<String, String> person = {

'name': 'Alice',

'city': 'Wonderland'

};

print(person['name']); // Output: Alice


8. Kelas dan Objek

Dart adalah bahasa berorientasi objek. Anda bisa membuat kelas dan objek untuk memodelkan entitas
nyata.

 Membuat kelas:

class Person {

String name;

int age;

// Constructor

Person([Link], [Link]);

void introduce() {

print('Hi, my name is $name and I am $age years old.');

Membuat objek dari kelas:

void main() {

Person person = Person('John', 25);

[Link]();

9. Asynchronous Programming

Dart mendukung asynchronous programming menggunakan Future dan async-await.

 Menggunakan Future:

Future<String> fetchData() async {

return [Link](Duration(seconds: 2), () => 'Data Fetched');


}

void main() async {

String data = await fetchData();

print(data);

10. Exception Handling

Untuk menangani kesalahan atau error, Dart mendukung penggunaan try-catch seperti bahasa
pemrograman lainnya.

void main() {

try {

int result = 10 ~/ 0; // Error karena pembagian dengan 0

print(result);

} catch (e) {

print('Error: $e');

Ringkasan Struktur Dasar Dart:

1. Komentar digunakan untuk dokumentasi.

2. Fungsi main() sebagai titik masuk program.

3. Variabel menggunakan var, dynamic, atau tipe statis seperti int, String, dll.

4. Fungsi dapat memiliki parameter dan nilai balik.

5. Kondisi (if-else) untuk pengambilan keputusan.

6. Looping (for, while) untuk perulangan.

7. List dan Map sebagai struktur data.

8. Kelas dan Objek untuk pemrograman berorientasi objek.

9. Asynchronous Programming untuk operasi non-blok.


10. Exception Handling untuk menangani error.

Itulah struktur dasar pengkodean di Dart yang bisa dijadikan fondasi untuk membuat aplikasi Dart
sederhana.

Tipe data Dart

Dart memiliki beberapa tipe data bawaan yang mendukung berbagai jenis nilai, dari angka hingga objek
kompleks seperti daftar dan peta. Berikut adalah tipe data utama dalam Dart:

1. Numbers (Angka)

Dart mendukung dua tipe data numerik: int dan double.

 int: digunakan untuk angka bulat (integer).

int age = 25;

int year = 2023;

 double: digunakan untuk angka desimal (floating point).

double price = 19.99;

double pi = 3.14159;

2. String (Teks)

Tipe data String digunakan untuk menyimpan urutan karakter (teks). Teks di Dart bisa dideklarasikan
menggunakan tanda kutip tunggal (') atau kutip ganda (").

 Deklarasi string:

String name = 'Alice';

String greeting = "Hello, World!";

 Interpolation: String di Dart mendukung string interpolation, memungkinkan kita menyisipkan


variabel di dalam string menggunakan simbol $.

String name = 'Alice';

String message = 'Hello, $name!'; // Output: Hello, Alice!

Jika ingin memanggil ekspresi kompleks dalam interpolasi, gunakan ${}.

String message = 'The sum of 2 + 3 is ${2 + 3}'; // Output: The sum of 2 + 3 is 5


3. Boolean

Tipe data bool hanya bisa bernilai true atau false. Ini biasanya digunakan dalam kondisi seperti if atau
while.

bool isLoggedIn = true;

bool hasData = false;

4. List (Array)

List adalah struktur data yang berisi kumpulan elemen berurutan (seperti array di bahasa
pemrograman lain). List bisa berisi elemen dengan tipe yang sama atau berbeda.

 List dengan tipe data spesifik:

List<int> numbers = [1, 2, 3, 4, 5];

 List yang dapat berisi elemen dari berbagai tipe:

List<dynamic> mixedList = [1, 'Hello', true];

 List kosong:

List<String> names = [];

5. Map (Dictionary)

Map adalah struktur data yang menyimpan pasangan key-value. Setiap key harus unik, tetapi nilai
(value) tidak harus unik. Map sering digunakan untuk merepresentasikan data dalam bentuk kunci dan
nilai, seperti kamus.

 Membuat Map:

Map<String, String> person = {

'name': 'Alice',

'city': 'Wonderland'

};

 Akses elemen dalam Map:

print(person['name']); // Output: Alice


 Map kosong:

Map<String, int> scores = {};

6. Set

Set adalah kumpulan elemen yang unik (tidak ada duplikasi). Set mirip dengan List, tetapi setiap elemen
hanya boleh muncul sekali.

 Membuat Set:

Set<int> uniqueNumbers = {1, 2, 3, 4, 4}; // Hanya akan menyimpan {1, 2, 3, 4}

7. Runes (Unicode)

Runes digunakan untuk merepresentasikan karakter Unicode. Dart mendukung Unicode, sehingga Anda
dapat bekerja dengan berbagai jenis karakter dari berbagai bahasa, termasuk emoji.

 Mengakses kode Unicode:

var heartSymbol = '\u2665'; // Simbol hati ♥

8. Symbol

Symbol adalah tipe data khusus yang digunakan untuk menyimpan simbol yang unik. Symbol jarang
digunakan, biasanya untuk meta-programming, dan sering digunakan di kode framework.

 Membuat Symbol:

Symbol s = #mySymbol;

9. Null

Dart memiliki tipe khusus untuk null yang merepresentasikan ketiadaan nilai. Sejak Dart 2.12, dengan
fitur null safety, sebuah variabel tidak bisa bernilai null secara default kecuali ditandai secara eksplisit.

 Deklarasi variabel nullable:

int? nullableNumber = null; // Tipe data ini dapat bernilai null

Dengan tanda tanya (?), kita menunjukkan bahwa nullableNumber dapat memiliki nilai null.

10. Dynamic

Tipe dynamic digunakan jika kita tidak tahu tipe data apa yang akan dipegang oleh variabel pada waktu
kompilasi. Variabel bertipe dynamic dapat berubah-ubah tipenya selama eksekusi program.

 Menggunakan dynamic:
dynamic something = 'Hello';

something = 123; // Ini diperbolehkan, karena dynamic bisa berubah tipe

Namun, menggunakan dynamic dapat meningkatkan risiko kesalahan pada runtime, sehingga disarankan
untuk menggunakannya dengan hati-hati.

11. Object

Object adalah tipe data root dari semua tipe di Dart. Semua variabel dalam Dart adalah turunan dari
Object, sehingga Object bisa menampung nilai dari tipe apapun.

Object anything = 'Hello'; // Menyimpan string

anything = 42; // Sekarang menyimpan integer

Ringkasan

Berikut adalah rangkuman tipe data utama dalam Dart:

 int: untuk bilangan bulat.

 double: untuk bilangan desimal.

 String: untuk teks.

 bool: untuk nilai benar/salah.

 List: untuk array atau kumpulan elemen berurutan.

 Map: untuk pasangan key-value.

 Set: untuk kumpulan elemen yang unik.

 Runes: untuk karakter Unicode.

 Symbol: untuk simbol yang unik.

 dynamic: tipe yang bisa berubah.

 Object: tipe dasar dari semua objek.

Dengan tipe data ini, Anda dapat memodelkan berbagai data dan logika dalam aplikasi Dart.
Function (Fungsi) Dart

Dalam Dart, fungsi (function) adalah bagian penting untuk membagi logika program menjadi bagian-
bagian yang terpisah dan mudah dikelola. Fungsi digunakan untuk mengeksekusi sekelompok instruksi
berulang kali atau ketika diperlukan. Berikut adalah penjelasan dasar tentang fungsi di Dart dan
beberapa jenis fungsi yang sering digunakan.

Struktur Dasar Fungsi di Dart

Fungsi di Dart memiliki struktur dasar sebagai berikut:

returnType functionName(parameter1, parameter2, ...) {

// Blok kode yang dieksekusi

return someValue; // Jika fungsi mengembalikan nilai

 returnType: Tipe data yang dikembalikan oleh fungsi (seperti int, String, dll). Jika fungsi tidak
mengembalikan nilai, gunakan void.

 functionName: Nama dari fungsi.

 parameter: Daftar parameter yang diterima oleh fungsi. Jika fungsi tidak memerlukan parameter,
maka tanda kurung kosong () digunakan.

 return: Kata kunci ini digunakan untuk mengembalikan nilai dari fungsi. Jika fungsi tidak
mengembalikan apa pun, ini bisa diabaikan.

Contoh Fungsi Sederhana

1. Fungsi tanpa parameter dan tanpa return value (void)

void sayHello() {
print('Hello, World!');
}

Cara memanggil fungsi:

void main() {

sayHello(); // Output: Hello, World!

}
2. Fungsi dengan parameter

Fungsi ini menerima input dari luar dalam bentuk parameter.

void greet(String name) {

print('Hello, $name!');

Cara memanggil fungsi:

void main() {

greet('Alice'); // Output: Hello, Alice!

3. Fungsi dengan nilai kembali (return value)

Fungsi ini mengembalikan hasil kepada pemanggil fungsi.

int add(int a, int b) {

return a + b;

Cara memanggil fungsi:

void main() {

int result = add(5, 3);

print(result); // Output: 8

}
Latihan

Berikut adalah beberapa **soal latihan Dart basic** yang meliputi penggunaan variabel, fungsi, kondisi,
dan struktur dasar pemrograman Dart, beserta jawaban atau solusi dari masing-masing soal.

### **Soal 1: Penjumlahan Sederhana**

Buat sebuah fungsi bernama `addNumbers` yang menerima dua parameter bertipe `int`, dan
mengembalikan hasil penjumlahan kedua angka tersebut. Cetak hasil penjumlahan di dalam `main()`.

#### **Jawaban:**

int addNumbers(int a, int b) {

return a + b;

void main() {

int result = addNumbers(5, 3);

print('Hasil penjumlahan: $result'); // Output: Hasil penjumlahan: 8

### **Soal 2: Memeriksa Bilangan Genap atau Ganjil**

Buat fungsi bernama `checkEvenOdd` yang menerima satu parameter bertipe `int`. Fungsi ini akan
mencetak `Genap` jika angka tersebut adalah bilangan genap dan mencetak `Ganjil` jika angka tersebut
adalah bilangan ganjil.

#### **Jawaban:**

void checkEvenOdd(int number) {

if (number % 2 == 0) {

print('$number adalah bilangan Genap');

} else {

print('$number adalah bilangan Ganjil');

}
}

void main() {

checkEvenOdd(10); // Output: 10 adalah bilangan Genap

checkEvenOdd(7); // Output: 7 adalah bilangan Ganjil

### **Soal 3: Menghitung Luas Persegi Panjang**

Buat fungsi bernama `calculateArea` yang menerima dua parameter: panjang dan lebar. Fungsi ini akan
mengembalikan luas persegi panjang (luas = panjang * lebar). Cetak hasil luas tersebut di dalam `main()`.

#### **Jawaban:**

int calculateArea(int panjang, int lebar) {

return panjang * lebar;

void main() {

int luas = calculateArea(5, 10);

print('Luas persegi panjang: $luas'); // Output: Luas persegi panjang: 50

### **Soal 4: Penggunaan List dan Perulangan**

Buat sebuah list yang berisi beberapa nama. Gunakan perulangan `for` untuk mencetak semua nama
dalam list tersebut.

#### **Jawaban:**

void main() {

List<String> names = ['Alice', 'Bob', 'Charlie', 'Diana'];

for (String name in names) {

print(name);
}

// Output:

// Alice

// Bob

// Charlie

// Diana

### **Soal 5: Mencari Angka Terbesar dari 3 Angka**

Buat fungsi bernama `findMax` yang menerima tiga angka sebagai parameter. Fungsi ini harus
mengembalikan angka terbesar di antara ketiganya.

#### **Jawaban:**

int findMax(int a, int b, int c) {

if (a > b && a > c) {

return a;

} else if (b > a && b > c) {

return b;

} else {

return c;

void main() {

int max = findMax(10, 25, 17);

print('Angka terbesar: $max'); // Output: Angka terbesar: 25

### **Soal 6: Menghitung Faktorial**


Buat sebuah fungsi bernama `factorial` yang menerima satu angka dan mengembalikan faktorial dari
angka tersebut. Faktorial dari `n` (ditulis `n!`) adalah hasil perkalian dari semua bilangan bulat positif ≤
`n`.

#### **Jawaban:**

int factorial(int n) {

int result = 1;

for (int i = 1; i <= n; i++) {

result *= i;

return result;

void main() {

print('Faktorial dari 5 adalah: ${factorial(5)}'); // Output: Faktorial dari 5 adalah: 120

### **Soal 7: Menghitung Rata-rata List Angka**

Buat fungsi bernama `calculateAverage` yang menerima list angka bertipe `List<int>`. Fungsi ini akan
menghitung dan mengembalikan nilai rata-rata dari list tersebut.

#### **Jawaban:**

double calculateAverage(List<int> numbers) {

int total = 0;

for (int number in numbers) {

total += number;

return total / [Link];

void main() {
List<int> numbers = [10, 20, 30, 40, 50];

print('Rata-rata: ${calculateAverage(numbers)}'); // Output: Rata-rata: 30.0

### **Soal 8: Memeriksa Angka Positif, Negatif, atau Nol**

Buat fungsi bernama `checkNumber` yang menerima satu angka dan mencetak apakah angka tersebut
**positif**, **negatif**, atau **nol**.

#### **Jawaban:**

void checkNumber(int number) {

if (number > 0) {

print('$number adalah angka positif');

} else if (number < 0) {

print('$number adalah angka negatif');

} else {

print('$number adalah nol');

void main() {

checkNumber(10); // Output: 10 adalah angka positif

checkNumber(-5); // Output: -5 adalah angka negatif

checkNumber(0); // Output: 0 adalah nol

### **Soal 9: Reverse String**

Buat sebuah fungsi bernama `reverseString` yang menerima satu string sebagai parameter, dan
mengembalikan string tersebut dalam urutan terbalik.

#### **Jawaban:**
String reverseString(String input) {

return [Link]('').[Link]('');

void main() {

print(reverseString('Dart')); // Output: traD

### **Soal 10: Membuat Fungsi Menghitung Pangkat**

Buat sebuah fungsi bernama `calculatePower` yang menerima dua parameter, yaitu basis dan eksponen.
Fungsi ini mengembalikan hasil dari basis yang dipangkatkan dengan eksponen.

#### **Jawaban:**

int calculatePower(int base, int exponent) {

int result = 1;

for (int i = 0; i < exponent; i++) {

result *= base;

return result;

void main() {

print('3^4 = ${calculatePower(3, 4)}'); // Output: 3^4 = 81

### Ringkasan:

Latihan-latihan di atas mencakup berbagai aspek dasar pemrograman Dart, seperti:

- Operasi dasar dan penjumlahan.

- Penggunaan kondisi (`if-else`).

- Perulangan (`for` loop).


- Manipulasi list dan string.

- Fungsi dengan return value.

- Penggunaan parameter opsional dan fungsi asinkron (dalam soal lanjutan).

Ini merupakan dasar-dasar penting untuk membangun keterampilan dalam pemrograman Dart.
Flutter 03. Stateless vs Statefull

Dalam Flutter, konsep stateless dan stateful berkaitan dengan bagaimana widget berinteraksi dengan
perubahan data yang terjadi di aplikasi. Widget di Flutter bersifat immutable, artinya setelah dibuat,
mereka tidak bisa diubah. Namun, kita bisa membedakan antara dua jenis widget: StatelessWidget dan
StatefulWidget.

Stateless: Aplikasi yang tidak membutuhkan perubahan state/keadaan.

StatelessWidget adalah widget yang tidak bergantung pada perubahan data atau status internal.
Artinya, widget ini hanya dirender sekali dan tidak berubah meskipun ada perubahan dalam aplikasi.

Karakteristik:

 Tidak memiliki state (keadaan) internal yang bisa berubah.

 Biasanya digunakan untuk UI yang tetap dan tidak memerlukan interaksi atau perubahan data.

 Misalnya: teks, gambar, atau ikon yang tidak berubah.

Stateless Widget

TEXT

TEXT

Bersifat statis hanya menampilkan output saja.

Statefull: Aplikasi yang membutuhkan perubahan state/keadaan.

2. StatefulWidget

StatefulWidget adalah widget yang dapat berubah berdasarkan perubahan state (keadaan) internal atau
eksternal. Dengan kata lain, widget ini bisa diperbarui atau dirender ulang setiap kali ada perubahan
dalam state-nya.
Karakteristik:

 Memiliki state (keadaan) yang dapat diubah selama aplikasi berjalan.

 Digunakan ketika UI memerlukan interaksi atau perubahan, seperti input pengguna, animasi,
atau data dinamis.

 Mempunyai dua bagian utama:

1. StatefulWidget: Kerangka widget.

2. State: Objek yang menyimpan status (data) yang dapat diubah, dan widget akan di-
render ulang ketika state berubah.

Stateless Widget

TEXT

[hasil]

Aksi input

Bersifat dinamis dapat menampilkan hasil dari input.

Anda mungkin juga menyukai