NAIYA SALSABILA
222406042
KOM B’22
Puji dan syukur penulis panjatkan kepada Allah SWT, dengan limpah karunia-
Nya penulis dapat menyelesaikan penyusunan makalah ini dengan judul Pemrograman
Mobile.
Terima kasih penulis sampaikan kepada setiap pihak yang sudah mendukung
selama belangsungnya pembuatan makalah ini. Terkhusus lagi penulis sampaikan
terima kasih kepada Bapak Drs. Syahriol Sitorus S.Si., M.IT. selaku dosen pengajar
dan asisten laboratorium Nathania Zefanya Nainggolan yang telah membimbing.
Penulis sekaligus juga berharap semoga makalah ini bisa bermanfaat bagi setiap
pembaca.
Disertai keseluruhan rasa rendah hati, kritik dan saran yang membangun amat
penulis nantikan, agar nantinya penulis dapat meningkatkan dan merevisi Kembali
pembuatan makalah di tugas lainnya dan diwaktu berikutnya.
Naiya Salsabila
i
DAFTAR ISI
Halaman
KATA PENGANTAR i
DAFTAR ISI ii
BAB 1 PENDAHULUAN
1.1 Latar Belakang 1
1.2 Rumusan Masalah 2
1.3 Tujuan 2
BAB 2 FLUTTER
2.1 Pengenalan Flutter 3
2.2 Cara Kerja Flutter 3
2.3 Bahasa Pemrograman Dart 4
2.4 Kelebihan dan Kekurangan Flutter 6
ii
4.8 Pernyataan Loncat 21
4.9 Fungsi Exit() 22
BAB 6 UI 1 FLUTTER
6.1 Widget 25
6.1.1 Konsep-konsep Penting tentang Widget 26
6.1.2 Penggunaan Widget Dasar 26
6.2 Layout 27
6.2.1 Jenis – Jenis Layout 28
6.3 Styling UI 29
6.3.1 Konsep Dasar Styling UI dalam Flutter 29
BAB 7 UI 2 FLUTTER
7.1 UI 2 Pada Flutter 31
7.2 Konsep dan Fitur dalam UI 2 Flutter 31
7.2.1 Animasi yang Lebih Kompleks 31
7.2.2 Pola Desain (Design Patterns) dan Manajemen State 33
7.2.3 Komponen UI yang Kompleks 34
7.2.4 Responsif dan Adaptabilitas 35
7.2.5 Pengujian UI yang Lebih Mendalam 36
BAB 8 PROJECT
8.1 Pengenalan Project 38
8.2 Intro Screen 38
8.3 Dashboard Screen 40
8.4 Detail Screen 42
BAB 9 PENUTUP
9.1 Kesimpulan 45
9.2 Saran 45
DAFTAR PUSTAKA
iii
BAB 1
PENDAHULUAN
1.3 Tujuan
1. Untuk menambah pengetahuan seluruh pembaca termasuk saya sendiri mengenai
pemrograman mobile
2. Untuk mengetahui bagaimana cara membuat aplikasi mobile terutama dengan
menggunakan framework Flutter.
3. Untuk mengetahui cara menggunakan Bahasa pemrograman Dart.
4. Untuk memenuhi tugas akhir praktikum Pemrograman Mobile sebagai syarat
untuk dapat mengikuti UAS praktikum Pemrograman Mobile.
BAB 2
FLUTTER
menu, dll.), elemen gaya (font, skema warna, dll.), aspek tata letak (padding, dll.), dan
banyak lagi. Flutter tidak menggunakan widget OEM, melainkan memberi
pengembang widget siap pakai mereka sendiri (Desain Material atau gaya Cupertino)
untuk aplikasi Android and iOS. Tentu saja, pengembang juga dapat membuat widget
sendiri. Flutter juga memberi pengembang tampilan reaktif. Flutter menggunakan Dart
untuk menghindari masalah kinerja yang disebabkan oleh penggunaan bahasa
pemrograman yang dikompilasi sebagai jembatan JavaScript. Flutter mengkompilasi
Dart AOT (Ahead Of Time) ke dalam kode native yang kompatibel dengan platform.
Dengan demikian, Flutter mampu berkomunikasi dengan mudah dengan
banyak platform tanpa memerlukan jembatan JavaScript yang memerlukan konteks
peralihan antara cakupan JavaScript dan cakupan asli. Seperti yang dapat Anda
bayangkan, kompilasi ke kode asli juga meningkatkan waktu peluncuran aplikasi
Anda. Saat ini, Flutter adalah satu-satunya SDK seluler yang menyediakan tampilan
aplikasi yang responsif tanpa memerlukan jembatan JavaScript. Itu sebabnya begitu
banyak pengembang seluler telah mencobanya dalam proyek. Salah satu fitur menarik
Flutter adalah bahasa pemrograman yang digunakan Flutter, Dart. Seperti sistem lain
yang menggunakan tampilan aplikasi reaktif, Flutter memperbarui pohon tampilan
aplikasi dengan setiap bingkai baru. Untuk mencapai ini, buat beberapa objek
yang tidak boleh bertahan lebih lama dari satu bingkai.
Dart menggunakan pengumpulan sampah generasi, yang telah terbukti sangat
efisien dalam sistem jenis ini. Selain itu, Dart memiliki kompiler "TreeShaker" yang
hanya berisi kode yang dibutuhkan oleh aplikasi Anda sendiri. Jika Anda hanya
membutuhkan satu atau dua widget, Anda bebas menggunakan perpustakaan
widget yang besar. Dart hadir dengan repositori paket perangkat lunak untuk
memperluas fungsionalitas aplikasi Anda. Misalnya, kami menyediakan beberapa
paket yang memberi Anda akses mudah ke Firebase, sehingga pengembang dapat
membangun aplikasi tanpa server.
(OOP) dimana struktur kode berada dalam class yang didalamnya berisi method
maupun variabel. Dart sendiri menggunakan C-Style syntax sehingga mekanisme dart
mirip dengan bahasa pemrograman C, java, javascript, dan Swift.
Dart pertama kali diresmikan pada konferensi GOTO di Aarhus, Denmark pada
10-12 Oktober 2011 yang dalam pengerjaan proyeknya dipimpin oleh Lars Bak dan
Kasper Lund. Sebelum rilis versi stabilnya, pada tahun 2013, dart merilis pertama kali
pada versi 1.0 ke publik dimana google memberikan dukungan secara penuh untuk
flutter yang merupakan framework yang menerapkan bahasa pemrograman dart. Dart
dan flutter sendiri bermula ketika muncul ide ngawang dari pihak google yang
menyatakan bahwa seharusnya terdapat cara yang lebih efektif dalam membuat
apalikasi mobile yang mendukung segi Interface UI/UX.
Tipe bahasa pemrograman dart berupa Statically Typed dimana tipe dari
variabel diketahui ketika proses compile, ketika membangun aplikasi mobile, dart
dicompile kedalam bahasa native agar dapat berjalan di mobile, lalu di transpiler ke
javascript agar dapat berjalan di browser. Transpiler bisa diartikan sebagai source-to-
source compiler , yaitu sebuah compiler yang mengambil source code suatu program
yang di tulis menggunakan suatu bahasa pemrograman sebagai input dan
menghasilkan source code yang equivalent dalam bahasa pemrograman lainnya Dart
diterapkan pada framework flutter yang merupakan framework untuk membuat
aplikasi mobile yang saat ini ramai diperbincangkan. Flutter adalah sebuah framework
yang dirancang khusus untuk membangun antarmuka (UI) aplikasi mobile yang lebih
ekspresif dan menarik.
6
stdout.write("umur : ");
var umur = stdin.readLineSync();
var usia =int.parse('$umur');
print('Nama : $nama');
print('umur : $usia');
print(umur.runtimeType); //string
print(usia.runtimeType); //int
}
Fungsi write() digunakan untuk menampilkan teks ke console “apa adanya”.
Artinya dia tidak akan membuat baris baru. Berbeda dengan print() yang akan selau
membuat baris baru di setiap mencetak teks. Lalu fungsi readLineSync() adalah fungsi
untuk membaca input dari keyboard. Fungsi ini akan mengembalikan nilai berupa
String. Sedangkan fungsi int.parse digunakan untuk merubah dari tipe data string
menjadi integer.
juga mengizinkan kita untuk menulis nilai bilangan riil dalam notasi sains, yaitu
dengan menambahkan huruf E atau e.
2. Tipe Num
Tipe num merupakan tipe induk dari tipe int dan double. Variabel yang
dideklarasikan menggunakan tipe num dapat diisi nilai dari bilangan bulat maupun
bilangan riil. Pada saat variabel dideklarasikan menggunakan tipe num, tipe data
dari variable tersebut akan bergantung pada nilai yang diisikan ke dalamnya. Jika
nilai yang diisikan bertipe int maka variabel tersebut bertipe int. Jika nilainya
bertipe double maka variabel akan bertipe double.
3. Elemen map dapat dihapus menggunakan dua cara, yaitu dengan menggunakan
metode remove() atau removeWhere(). Metode remove() akan menghapus elemen
map berdasarkan nama kunci yang disertakan sebagai parameternya. Metode
removeWhere() digunakan untuk menghapus elemen map berdasarkan kriteria
tertentu. Kriteria perlu ditulis dalam bentuk fungsi yang selanjutnya dikirim
sebagai parameter dari metode removeWhere(). Berbeda dengan list, dalam objek
map kriteria dapat ditentukan berdasarkan kunci maupun nilainya.
3.3 Operator
Operator merupakan simbool khusus yang disediakan oleh Dart untuk
melakukan operasi-operasi tertentu, seperti perhitungan bilangan, penyambungan teks,
perbandingan dua buah nilai, dan sebagainya.
Ada beberapa hal yang harus diketahui mengenai operator logika yaitu
1. Operasi AND hanya akan menghasilkan nilai true jika kedua operand bernilai true.
Selain kondisi tersebut, maka nilai yang akan dihasilkan adalah false.
2. Operasi OR hanya akan menghasilkan nilai false jika kedua operand bernilai false.
Selain kondisi tersebut, nilai yang akan dihasilkan adalah true.
3. Operasi negasi akan mengembalikan nilai lawan (kebalikan) dari nilai operand.
BAB 4
STRUKTUR KONTROL FLUTTER
4.2 IF
Digunakan untuk mengevaluasi suatu kondisi dan menjalankan blok kode jika
kondisi terpenuhi. Pembuatan struktur pemilihan menggunakan perintah if dapat
dibedakan menjadi 3 yaitu perintah if satu kasus, perintah if dua kasus, dan perintah if
tiga kasus atau lebih.
Dalam contoh ini, jika nilai variabel nilai lebih besar dari 5, pesan "Nilai lebih
besar dari 5" akan dicetak karena blok kode di dalam pernyataan if hanya akan
dieksekusi jika kondisinya benar (nilai variabel `nilai` lebih besar dari 5). Jika tidak,
maka blok kode tersebut akan dilewati tanpa dieksekusi.
Dalam contoh di atas, jika nilai dari variabel pilihan adalah A, maka blok kode
di bawah case A akan dieksekusi. Jika nilainya adalah B, maka blok kode di bawah
case B yang akan dieksekusi. Jika nilainya adalah C, maka blok kode di bawah case C
yang akan dieksekusi. Jika tidak ada kasus yang cocok dengan nilai pilihan, maka blok
kode di bawah default akan dieksekusi. Pernyataan break digunakan untuk
menghentikan eksekusi setelah suatu blok kode case dieksekusi. Jika tidak ada break,
eksekusi akan dilanjutkan ke kasus berikutnya setelah kasus yang cocok dieksekusi.
Pernyataan default adalah opsional dan akan dieksekusi jika tidak ada kasus yang
cocok dengan nilai yang dievaluasi. Ini memungkinkan penanganan nilai yang tidak
dikenali.
kita ingin menjalankan suatu blok kode atau ketika kita ingin melakukan iterasi melalui
suatu rentang nilai.
}
print(i); // mencetak nilai i selama iterasi, kecuali saat i ==
2
}
3. Return
Pernyataan return digunakan untuk mengembalikan nilai dari sebuah fungsi dan
menghentikan eksekusi fungsi tersebut. Contoh:
int calculateSquare(int number) {
if (number < 0) {
return -1; // akan mengembalikan nilai -1 jika angka negatif
}
return number * number; // mengembalikan nilai kuadrat jika
angka positif }
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Hello Flutter')),
body: Center(
child: Text('Hello, World!'),
),
),
);
}
}
3. Menjalankan Aplikasi
a. Gunakan perintah `flutter run` melalui terminal atau command prompt untuk
menjalankan aplikasi Flutter Anda.
b. Atau jalankan melalui IDE dengan menekan tombol 'Run'.
4. Lihat Hasilnya
a. Aplikasi akan muncul pada emulator atau perangkat fisik yang terhubung dan
menampilkan pesan "Hello, World!" di tengah layar.
6.1 Widget
Widget adalah komponen dasar dalam pengembangan aplikasi Flutter. Mereka
adalah elemen-elemen yang membangun UI (User Interface) dan merupakan bagian
yang sangat penting dalam membangun aplikasi Flutter. Ada dua jenis utama widget:
StatelessWidget dan StatefulWidget. Widget dalam Flutter adalah konsep yang sangat
penting karena mereka adalah elemen dasar untuk membangun tampilan UI yang
dinamis, responsif, dan menarik dalam aplikasi Flutter.
1. Stateless Widget
Widget ini bersifat statis dan tidak memiliki status internal yang dapat berubah. Ini
berarti setelah widget telah dirender, tampilannya tidak akan berubah. Contoh
StatelessWidget
import 'package:flutter/material.dart';
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: Text('Hello, World!'),
);
}
}
2. Stateful Widget
Widget ini memiliki status internal yang dapat berubah. Ketika status widget
berubah, widget ini diperbarui dan dirender kembali. Contoh StatefulWidget:
import 'package:flutter/material.dart';
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
int counter = 0;
void incrementCounter() {
26
setState(() {
counter++;
});
}
@override
Widget build(BuildContext context) {
return Column(
children: [
Text('Counter: $counter'),
RaisedButton(
onPressed: () {
incrementCounter();
},
child: Text('Increment'),
), ], );
} }
dan dioptimalkan untuk berbagai kebutuhan UI. Berikut adalah beberapa contoh
penggunaan widget dasar yang sering digunakan dalam Flutter:
1. Text Widget, Widget untuk menampilkan teks di layar.
Text('Hello, World!'); // Menampilkan teks statis
4. Icon Widget, Widget untuk menampilkan ikon dari ikon bawaan Flutter atau ikon
kustom.
Icon(Icons.favorite); // Menampilkan ikon bawaan Flutter
6.2 Layout
Tata letak atau layout adalah aspek penting dalam pengembangan aplikasi
Flutter yang menentukan cara susunan widget ditempatkan dalam tampilan UI.
Memahami berbagai opsi tata letak yang tersedia dapat membantu untuk membuat
tampilan yang responsif dan menarik dalam aplikasi. Layout dalam Flutter mencakup
berbagai konsep dan teknik yang penting dalam membangun tampilan UI yang
responsif, interaktif, dan menarik dalam aplikasi Flutter. Hal ini memungkinkan
pengembang untuk membuat tata letak yang sesuai dengan kebutuhan aplikasi mereka
dengan berbagai opsi yang tersedia dalam kerangka kerja Flutter.
28
6.3 Styling UI
Styling UI dalam Flutter adalah proses mengatur tampilan elemen-elemen
antarmuka pengguna (UI) dalam aplikasi Flutter. Ini melibatkan penggunaan properti,
gaya, dan tema untuk mengubah penampilan visual dari widget-widget dalam aplikasi.
Styling UI dalam Flutter memungkinkan pengembang untuk mengatur tampilan
aplikasi dengan lebih baik, memberikan identitas visual yang khas, dan meningkatkan
pengalaman pengguna dengan mengubah estetika dan presentasi antarmuka pengguna
aplikasi mereka.
2. Implicit Animations
a. Animated Builder, Menerapkan perubahan ke bagian tertentu dari UI dengan
menggunakan Animated Builder untuk mengelola bagian yang diubah saat
animasi berlangsung.
b. Implicitly Animated Widgets, Menggunakan widget seperti Animated
Container, AnimatedOpacity, AnimatedPositioned, atau AnimatedSize yang
secara otomatis menangani animasi perubahan properti.
3. Custom Transitions dan Hero Animations
a. Custom Page Transitions, Membuat transisi antara layar menggunakan widget
Page Route Builder untuk mengontrol transisi navigasi.
b. Hero Animations, Membuat efek animasi transisi yang mulus antara elemen-
elemen UI yang sama di layar yang berbeda.
4. Flare Animations
Flare Integration, Menggunakan animasi dari file Flare (.flr) yang dapat
diintegrasikan ke dalam aplikasi Flutter untuk animasi yang lebih kompleks dan
interaktif.
5. Rive Animations
Rive Integration, Menggunakan animasi dari file Rive (sebelumnya bernama
Lottie) untuk animasi yang lebih kompleks dan responsif di dalam aplikasi Flutter.
6. Fungsi Transformasi dan Easing
a. Matrix4 Transformations, Menggunakan transformasi 2D dan 3D seperti
rotasi, translasi, dan skalasi untuk membuat animasi yang lebih kompleks.
b. Easing Functions, Menggunakan fungsi Curves atau Easing Functions untuk
memberikan perubahan kecepatan dalam animasi.
7. Animasi Berdasarkan Gesture
Gesture Animations, Menerapkan animasi berdasarkan interaksi pengguna seperti
swipe, drag, atau pinch menggunakan Gesture Detector atau Transform Gesture
Detector.
8. Penggabungan Animasi dan State Management yang Lebih Kompleks
Animation with State Management, Menggabungkan animasi dengan manajemen
state yang lebih kompleks seperti BLoC atau Provider untuk menciptakan UI yang
responsif dan dinamis.
33
atau proses latar belakang lainnya. Serta menerapkan transformasi data untuk
mengubah dan memanipulasi data sebelum disimpan dalam state.
7. Layout Builder
Penyesuaian layout dinamis, menggunakan Layout Builder untuk membuat tata
letak yang responsif dan dinamis berdasarkan ukuran layar dan konten.
8. Transform Widget
Transformasi elemen UI, menggunakan transform widget untuk melakukan
transformasi seperti rotasi, translasi, dan skalasi pada elemen UI.
9. Custom Widgets
Widget kustom yang dibangun sendiri, membangun widget kustom untuk
menangani kebutuhan UI yang sangat spesifik dan kompleks.
10. Page View dan TabBar View
Navigasi dengan gestur berbasis halaman, menerapkan navigasi antar halaman
dengan menggunakan Page View atau TabBar View untuk berpindah antara
berbagai layar.
9.1 Kesimpulan
Melalui pemahaman tentang pemrograman mobile, telah terungkap betapa
pentingnya peran teknologi ini dalam memengaruhi cara kita berinteraksi dengan
dunia digital. Beberapa point penting dari makalah ini meliputi
1. Platform seperti Android dan iOS, serta framework seperti Flutter atau Dart,
memainkan peran utama dalam memfasilitasi pembuatan aplikasi mobile yang
inovatif dan responsif.
2. Pengalaman pengguna yang baik (user experience/UX) menjadi kunci kesuksesan
sebuah aplikasi mobile. Desain yang intuitif dan responsif sangat berkontribusi
terhadap daya tarik dan keberhasilan sebuah aplikasi.
3. Menjamin kompatibilitas lintas platform dan keamanan aplikasi menjadi aspek
yang tak boleh diabaikan dalam pengembangan aplikasi mobile.
9.2 Saran
Dari makalah ini, beberapa saran dapat diberikan untuk pengembangan lebih
lanjut dalam pemrograman mobile
1. Teruslah eksplorasi berbagai platform dan framework dalam pengembangan
aplikasi mobile untuk menemukan alat yang paling sesuai dengan kebutuhan
proyek.
2. Prioritaskan pengalaman pengguna yang baik dalam desain aplikasi, dengan
memperhatikan aspek interaktif, visual, dan fungsional.
3. Jangan abaikan aspek keamanan dan performa aplikasi. Teruslah memperbarui
pengetahuan tentang praktik keamanan terkini dan optimisasi kinerja aplikasi.
4. Pemrograman mobile terus berkembang dengan cepat. Selalu perbarui diri dengan
teknologi terkini dan pelajari praktik terbaik melalui buku, kursus online, atau
komunitas pengembang.
DAFTAR PUSTAKA
https://himasis.org/artikel/320-materi-pengenalan-dan-cara-kerja-flutter
https://idmetafora.com/news/read/743/Mengenal-Flutter-Sebuah-Teknologi-Yang-
Diciptakan-Google.html
https://repository.unikom.ac.id/68459/1/Belajar%20Bahasa%20Pemrograman%20Da
rt.pdf
https://codekey.id/dart/variabel-dart/
https://repository.unikom.ac.id/68461/1/Input%20dan%20Output%20dalam%20Dart.
pdf
https://www.barajacoding.or.id/control-flow-pada-dart/