eksplorasi framework flutter dengan bahasa pemrograman

72
KERJA PRAKTIK – IF184801 Eksplorasi Framework Flutter dengan Bahasa Pemrograman Dart untuk Membangun Aplikasi Mobile Perhitungan Matematika Numerik Gamelab Indonesia, Kantor Educa Studio Jl. Gilingrejo No. 10, Gendongan, Salatiga 50743 Periode: 22 Maret 2021 - 16 April 2021 Oleh: Miranda Manurung 05111740000144 Pembimbing Jurusan Adhatus Solichah Ahmadiyah, S.Kom, M.Sc. Pembimbing Lapangan Sonny Michael Wijaya, S. Kom. DEPARTEMEN TEKNIK INFORMATIKA Fakultas Teknologi Elektro dan Informatika Cerdas Institut Teknologi Sepuluh Nopember Surabaya 2021

Upload: others

Post on 06-Nov-2021

25 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

i

10

KERJA PRAKTIK – IF184801

Eksplorasi Framework Flutter dengan Bahasa

Pemrograman Dart untuk Membangun Aplikasi Mobile

Perhitungan Matematika Numerik

Gamelab Indonesia, Kantor Educa Studio

Jl. Gilingrejo No. 10, Gendongan, Salatiga 50743

Periode: 22 Maret 2021 - 16 April 2021

Oleh: Miranda Manurung 05111740000144

Pembimbing Jurusan Adhatus Solichah Ahmadiyah, S.Kom, M.Sc. Pembimbing Lapangan Sonny Michael Wijaya, S. Kom.

DEPARTEMEN TEKNIK INFORMATIKA Fakultas Teknologi Elektro dan Informatika Cerdas Institut Teknologi Sepuluh Nopember Surabaya 2021

Page 2: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

ii

10

[Halaman ini sengaja dikosongkan]

Page 3: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

iii

10

Oleh:

Miranda Manurung 05111740000144

Pembimbing Jurusan Adhatus Solichah Ahmadiyah, S.Kom, M.Sc.

Pembimbing Lapangan

Sonny Michael Wijaya, S. Kom.

DEPARTEMEN TEKNIK INFORMATIKA Fakultas Teknologi Elektro dan Informatika Cerdas Institut Teknologi Sepuluh Nopember Surabaya 2021

KERJA PRAKTIK – IF184801

Eksplorasi Framework Flutter dengan Bahasa

Pemrograman Dart untuk Membangun Aplikasi Mobile

Perhitungan Matematika Numerik

Gamelab Indonesia, Kantor Educa Studio

Jl. Gilingrejo No. 10, Gendongan, Salatiga 50743

Periode: 22 Maret 2021 - 16 April 2021

Page 4: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

iv

10

[Halaman ini sengaja dikosongkan]

Page 5: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

v

10

DAFTAR ISI

DAFTAR ISI v

DAFTAR GAMBAR ix

DAFTAR TABEL xi

DAFTAR KODE SUMBER xviii

LEMBAR PENGESAHAN xv

ABSTRAK xvii

KATA PENGANTAR xix

BAB I PENDAHULUAN 1

1.1. Latar Belakang 1

1.2. Tujuan 2

1.3. Manfaat 2

1.4. Rumusan Masalah 3

1.5. Lokasi dan Waktu Kerja Praktik 3

1.6. Metodologi Kerja Praktik 3

1.6.1. Perumusan Masalah 3

1.6.2. Studi Literatur 3

1.6.3. Analisis dan Perancangan 4

1.6.4. Implementasi 4

1.6.5. Pengujian dan Evaluasi 4

1.6.6. Kesimpulan dan Saran 4

1.7. Sistematika Laporan 5

1.7.1. Bab I Pendahuluan 5

Page 6: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

vi

10

1.7.2. Bab II Profil Perusahaan 5

1.7.3. Bab III Tinjauan Pustaka 5

1.7.4. Bab IV Analisis dan Perancangan Sistem 5

1.7.5. Bab V Implementasi Sistem 5

1.7.6. Bab V Pengujian dan Evaluasi 5

1.7.7. Bab VI Kesimpulan dan Saran 5

BAB II PROFIL PERUSAHAAN 7

2.1. Profil Perusahaan 7

2.1.1 Educa Studio 7

2.1.2 Gamelab Indonesia 7

2.2. Logo Perusahaan 8

2.3. Visi Misi Perusahaan 8

2.4. Struktur Organisasi 10

2.5. Lokasi 10

BAB III TINJAUAN PUSTAKA 11

3.1. Pemrograman Dart 11

3.2. Core Library Dart 12

3.3. Dart SDK 13

3.4. Flutter 14

3.5. Visual Studio Code 15

BAB IV ANALISIS DAN PERANCANGAN SISTEM 17

4.1. Analisis Sistem 17

4.1.1. Definisi Umum Aplikasi 17

Page 7: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

vii

10

4.1.2. Proses Bisnis 17

4.2. Perancangan Sistem 22

BAB V IMPLEMENTASI SISTEM 25

5.1. Implementasi Program Numerik 25

5.1.1. Home 25

5.1.2. Primality Test 27

5.1.3. Base Conversion 29

5.1.4. Faktor Persekutuan Terbesar 33

5.1.5. Faktorial 34

5.1.6. Fibonacci 36

BAB VI PENGUJIAN DAN EVALUASI 389

6.1. Tujuan Pengujian 39

6.2. Kriteria Pengujian 39

6.3. Skenario Pengujian 39

6.4. Evaluasi Pengujian 48

BAB VII KESIMPULAN DAN SARAN 49

7.1. Kesimpulan 49

7.2. Saran 49

DAFTAR PUSTAKA 51

BIODATA PENULIS 53

Page 8: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

viii

10

[Halaman ini sengaja dikosongkan]

Page 9: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

ix

10

DAFTAR GAMBAR

Gambar 2.1. Logo Educa Studio...........…......................................8

Gambar 2.2. Logo Gamelab Indonesia..….....................................8

Gambar 2.3. Struktur Organisasi Perusahaan...............................10

Gambar 4.1. Use Case Diagram Aplikasi Perhitungan Matematika

Numerik .......................................................................................18

Gambar 4.2. Activity Diagram Memilih Menu.............................19

Gambar 4.3. Activity Diagram Menghitung Fibonacci................19

Gambar 4.4. Activity Diagram Mengecek Bilangan Prima..........20

Gambar 4.5. Activity Diagram Menghitung Faktorial Bilangan..21

Gambar 4.6. Activity Diagram Menghitung Faktor Persekutuan

Terbesar........................................................................................21

Gambar 4.7. Activity Diagram Mengonversi Basis......................22

Gambar 6.1. Tampilan Home Aplikasi.........................................40

Gambar 6.2. Primality Test …......................................................41

Gambar 6.3. Tampilan Aplikasi pada Fitur Primality Test ….......41

Gambar 6.4. Base Conversion …..................................................42

Gambar 6.5. Tampilan Aplikasi pada Fitur Base Conversion.......42

Gambar 6.6. Faktor Persekutuan Terbesar....................................43

Gambar 6.7. Tampilan Aplikasi pada Fitur Faktor Persekutuan

Terbesar........................................................................................44

Gambar 6.8. Faktorial …..............................................................45

Gambar 6.9. Tampilan Aplikasi pada Fitur Faktorial....................45

Gambar 6.10. Fibonacci …...........................................................46

Gambar 6.11. Tampilan Aplikasi pada Fitur Fibonacci................47

Page 10: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

x

10

[Halaman ini sengaja dikosongkan]

Page 11: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

xi

10

DAFTAR TABEL

Tabel 6.1 Hasil Evaluasi Pengujian.............................................48

Page 12: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

xii

10

[Halaman ini sengaja dikosongkan]

Page 13: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

xiii

10

DAFTAR KODE SUMBER

Potongan Kode 5.1. Rute dan Kelas dalam Home.......................25

Potongan Kode 5.2. Tampilan Home Aplikasi dan Widget untuk

Mengarahkan ke Program Numerik.............................................26

Potongan Kode 5.3. Program Algoritma dan Widget untuk

Primality Test...............................................................................28

Potongan Kode 5.4. Program Algoritma dan Widget untuk Base

Conversion...................................................................................30

Potongan Kode 5.5. Program Algoritma dan Widget untuk Faktor

Persekutuan Terbesar...................................................................33

Potongan Kode 5.6. Program Algoritma dan Widget untuk

Faktorial.......................................................................................35

Potongan Kode 5.7. Program Algoritma dan Widget

Fibonacci......................................................................................37

Page 14: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

xiv

10

[Halaman ini sengaja dikosongkan]

Page 15: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

xv

10

LEMBAR PENGESAHAN

KERJA PRAKTIK

Eksplorasi Framework Flutter dengan Bahasa

Pemrograman Dart untuk Membangun Aplikasi Mobile

Perhitungan Matematika Numerik

Oleh:

Miranda Manurung 05111740000144

Disetujui oleh Pembimbing Kerja Praktik:

1. Adhatus Solichah

Ahmadiyah, S.Kom, M.Sc.

NIP. 198508262015042002

(Pembimbing Departemen)

2. Sonny Michael Wijaya, S.

Kom.

(Pembimbing Lapangan)

Page 16: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

xvi

10

[Halaman ini sengaja dikosongkan]

Page 17: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

xvii

10

Eksplorasi Framework Flutter dengan Bahasa

Pemrograman Dart untuk Membangun Aplikasi Mobile

Perhitungan Matematika Numerik

Nama Mahasiswa : Miranda Manurung

NRP : 05111740000144

Departemen : Teknik Informatika FTEIC-ITS

Pembimbing Departemen : Adhatus Solichah Ahmadiyah,

S.Kom, M.Sc. Pembimbing Lapangan : Sonny Michael Wijaya, S. Kom.

ABSTRAK

Tren aplikasi mobile semakin luas dan tak terkendali. Saat

ini, pengembangan aplikasi mobile semakin terfokus pada dua

sistem operasi yang paling banyak digunakan, yaitu Android dan

iOS. Dalam mempermudah proses pengembangan, ada banyak

tools yang bisa digunakan. Beberapa tools yang sudah populer

diantaranya adalah Native, Hybrid, dan Cross-platform. Saat ini,

Flutter semakin dikenal sebagai tren baru dalam pengembangan

aplikasi mobile sejak dirilis pada tahun 2017. Flutter merupakan

pengembangan perangkat lunak (SDK) untuk aplikasi mobile

dalam platform Android maupun iOS dengan codebase tunggal.

Karena Flutter merupakan tools baru, maka dalam Kerja Praktik ini

saya melakukan eksplorasi Flutter serta Dart karena keduanya

saling berkaitan, dimana Dart merupakan bahasa pemrograman

resmi untuk framework Flutter.

Hasil eksplorasi framewok Flutter dan bahasa

pemrograman Dart diimplementasikan pada studi kasus

pembangunan aplikasi mobile perhitungan matematika numerik

pada platform Android. Pengembangan aplikasi dikerjakan dengan

Page 18: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

xviii

10

menggunakan bahasa pemrograman Dart dalam menyusun

algoritma perhitungan dan diimplementasikan menggunakan

framework Flutter dalam membangun aplikasi mobile. Aplikasi

perhitungan numerik ini dapat membantu penyelesaian soal

numerik seperti mengecek bilangan prima, menghitung faktor

suatu bilangan, mendapatkan faktor persekutuan terbesar dari dua

buah bilangan, menghitung hasil deret fibonacci, hingga mengubah

basis bilangan. Dengan dibangunnya aplikasi ini, didapat banyak

kelebihan apabila membangun aplikasi mobile menggunakan

Flutter dan Dart. Dengan Flutter, proses pengembangan aplikasi

menjadi lebih cepat, praktis untuk dua platform sekaligus, dan

mudah dipelajari daripada pengembangan aplikasi native lainnya.

Namun Flutter juga memiliki beberapa kekurangan seperti library

yang masih belum lengkap serta dokumentasi dan tutorial yang

masih sedikit karena masih merupakan tools yang cukup baru

dalam dunia developer.

Kata Kunci : Dart, Flutter, Numerik, Aplikasi Mobile.

Page 19: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

xix

10

KATA PENGANTAR

Puji syukur penulis panjatkan kepada Tuhan Yang Maha

Esa atas penyertaan dan karunia-Nya sehingga penulis dapat

menyelesaikan salah satu kewajiban sebagai mahasiswa

Departemen Teknik Informatika ITS, yaitu Kerja Praktik yang

berjudul: Eksplorasi Framework Flutter dengan Bahasa

Pemrograman Dart untuk Membangun Aplikasi Mobile

Perhitungan Matematika Numerik.

Penulis menyadari bahwa masih banyak kekurangan baik

dalam pelaksanaan kerja praktik maupun penyusunan buku laporan

kerja praktik ini. Namun penulis berharap buku laporan ini dapat

menambah wawasan pembaca dan dapat menjadi sumber referensi.

Penulis mengharapkan kritik dan saran yang membangun untuk

kesempurnaan buku laporan kerja praktik ini.

Melalui buku laporan ini, penulis juga ingin

menyampaikan rasa terima kasih kepada orang-orang yang telah

membantu menyusun laporan kerja praktik baik secara langsung

maupun tidak langsung antara lain:

1. Orang tua penulis.

2. Bapak Ary Mazharuddin S.Kom., M.Comp.Sc. selaku

koordinator kerja praktik.

3. Ibu Adhatus Solichah Ahmadiyah, S.Kom, M.Sc. selaku

dosen pembimbing kerja praktik.

4. Bapak Sonny Michael Wijaya selaku pembimbing

lapangan selama kerja praktik berlangsung.

Palembang, 19 April 2021

Miranda Manurung

Page 20: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

xx

10

[Halaman ini sengaja dikosongkan]

Page 21: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

1

10

BAB I

PENDAHULUAN

1.1. Latar Belakang

Perkembangan mobile apps development

memberikan banyak tawaran tools yang dapat digunakan

untuk mempermudah proses pembangunannya. Salah satu

tools baru yang kini banyak dipelajari developer saat ini

adalah Flutter, sebuah framework crossed-platform untuk

pengembangan aplikasi mobile. Flutter telah banyak

diterapkan dalam beberapa perusahan besar seperti Grab,

Playstore, hingga Ebay. Dengan tren Flutter yang semakin

diperbincangkan, kedepannya akan semakin banyak

aplikasi mobile yang dibangun menggunakan Flutter

sehingga akan sangat berguna untuk melakukan eksplorasi

Flutter saat ini.

Flutter sering digunakan untuk membuat aplikasi

secara cepat untuk iOS, Android, web, dan desktop dengan

satu basis kode. Flutter mendukung hot reload kode

selama proses pengembangan yang dapat memuat ulang

stateful aplikasi dengan cepat selama proses

pengembangan. Flutter sendiri tidak bisa lepas dari Dart

yang merupakan bahasa pemrograman resmi Flutter. Dart

merupakan bahasa pemrograman yang dikembangkan oleh

Google untuk general-purpose programming language.

Dart memiliki cakupan yang cukup luas sehingga bisa

diterapkan untuk membuat aplikasi mobile, IoT, front-end

(web) dan back-end (CLI), bahkan bisa digunakan untuk

membangun sebuah game. Bahasa pemrograman Dart

berbasis kelas yang diketik secara statis yang dapat

mengkompilasi Just in Time (JIT) atau Ahead of Time

(AOT).

Dalam proses pelaksanaan kerja praktik, saya

berkesempatan untuk membangun suatu aplikasi mobile

Page 22: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

2

10

perhitungan matematika numerik. Perhitungan numerik

merupakan metode perhitungan bilangan yang dijalankan

dalam proses matematis dan memberikan output sesuai

dengan kondisi yang diminta. Aplikasi ini mampu

menghitung faktorial persekutuan terbesar dua bilangan,

menghitung faktorial, menghitung fibonacci, mengecek

bilangan prima, dan melakukan konversi bilangan

berdasarkan basisnya. Aplikasi ini dapat membantu untuk

menghitung dan memverifikasi hasil perhitungan dengan

cepat karena dibangun dengan algoritma yang efektif dan

cepat. Dari hasil eksplorasi ini, didapat banyak keuntungan

serta beberapa kelemahan saat membangun aplikasi

mobile menggunakan Flutter.

1.2. Tujuan

Tujuan dari pembuatan aplikasi perhitungan

matematika numerik dalam pelaksanaan kerja praktik ini

adalah untuk mengimplementasikan pembelajaran

framework Flutter dan bahasa pemrograman Dart dalam

pembuatan aplikasi mobile.

1.3. Manfaat

Manfaat yang diperoleh melalui Kerja Praktik ini

adalah diharapkan dengan dibangunnya aplikasi

perhitungan matematika numerik menggunakan

framework Flutter dan bahasa pemrograman Dart, dapat

menjadi panduan dan memperkuat dasar pemahaman bagi

developer dalam membangun aplikasi mobile

menggunakan bahasa pemrograman Dart dan framework

Flutter.

Page 23: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

3

10

1.4. Rumusan Masalah

Rumusan masalah dari kerja praktik ini adalah

sebagai berikut:

1. Bagaimana pembuatan program algoritma numerik

dengan menggunakan bahasa pemrograman Dart?

2. Bagaimana mengimplementasikan program algoritma

numerik ke dalam aplikasi mobile menggunakan

Flutter?

1.5. Lokasi dan Waktu Kerja Praktik

Kerja praktik dilaksanakan pada waktu dan

tempatsebagai berikut:

Lokasi : Work from home

Waktu : 22 Maret 2021 – 16 April 2021

Hari Kerja : Senin – Jumat

Jam Kerja : 07.45 WIB – 17.00 WIB

1.6. Metodologi Kerja Praktik

Metodologi dalam pembuatan buku kerja praktik meliputi :

1.6.1. Perumusan Masalah Dalam tahap ini, saya perlu mengetahui

permasalahan apa yang terjadi dan mampu

menyelesaikan permasalahan tersebut dengan tepat.

Lalu saya juga perlu mengetahui semua kebutuhan

dalam permasalahan tersebut.

1.6.2. Studi Literatur Setelah ditentukan rumusan masalah mengenai

program yang akan dibuat, dilakukan studi literatur

mengenai implementasinya. Pada tahap ini dilakukan

proses pencarian, pembelajaran, dan pengumpulan

informasi yang berkaitan dengan implementasi

program yang akan dibuat. Informasi diperoleh melalui

Page 24: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

4

10

kelas wajib yang diikuti pada minggu pertama, serta

melalui internet dan dapat menanyakan trainer jika

terdapat permasalahan yang belum bisa terpecahkan.

1.6.3. Analisis dan Perancangan Tahap ini meliputi penjelasan mengenai hasil dari

studi literatur yang dilakukan. Dari beberapa metode

yang ditemukan saat proses pembelajaran, akan

dianalisa metode mana yang sesuai sehingga tepat dan

efektif untuk diterapkan ke dalam program yang akan

dibuat. Bahasa pemrograman yang akan digunakan

sudah ditetapkan, yaitu Dart dan Flutter sebagai

framework dalam membangun aplikasi, dan batasan-

batasan data yang akan digunakan telah ditentukan

dalam requirement studi kasus yang diberikan.

1.6.4. Implementasi Implementasi merupakan realisasi dari tahap

perancangan. Pada tahap ini saya melakukan proses

perancangan program dan pembangunan aplikasi sesuai

dengan studi kasus yang diberikan dan

menyelesaikannya sesuai dengan timeline yang

diberikan.

1.6.5. Pengujian dan Evaluasi Setelah aplikasi telah jadi dibuat, perlu adanya

evaluasi untuk menguji apakah program aplikasi sesuai

dengan harapan requirement yang diminta atau tidak.

Jika masih belum sesuai atau perlu memperbaiki

metode, dan merevisi ulang program yang telah dibuat.

1.6.6. Kesimpulan dan Saran Pada bab ini, dipaparkan kesimpulan yang dapat

diambil serta saran dalam pengerjaan kerja praktik.

Page 25: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

5

10

1.7. Sistematika Laporan 1.7.1. Bab I Pendahuluan

Bab ini berisi latar belakang, tujuan, manfaat,

rumusan masalah, lokasi, dan waktu kerja praktik,

metodologi, dan sistematika laporan.

1.7.2. Bab II Profil Perusahaan Bab ini menjelaskan secara rinci tentang profil

Gamelab.ID kantor Educa Studio, tempat saya

melaksanakan kerja praktik.

1.7.3. Bab III Tinjauan Pustaka

Bab ini berisi penjelasan mengenai tinjauan

pustaka dan literatur yang digunakan dalam

penyelesaian kerja praktik di Gamelab.ID kantor Educa

Studio.

1.7.4. Bab IV Analisis dan Perancangan Sistem

Bab ini berisi mengenai tahap analisis sistem

aplikasi dalam menyelesaikan proyek kerja praktik.

1.7.5. Bab V Implementasi Sistem

Bab ini berisi uraian tahap - tahap yang dilakukan

untuk proses implementasi program.

1.7.6. Bab V Pengujian dan Evaluasi

Bab ini berisi hasil uji coba dan evaluasi dari

program yang telah dibuat selama pelaksanaan kerja

praktik.

1.7.7. Bab VI Kesimpulan dan Saran

Bab ini berisi kesimpulan dan saran yang didapat

dari proses pelaksanaan kerja praktik.

Page 26: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

6

10

[Halaman ini sengaja dikosongkan]

Page 27: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

7

10

BAB II

PROFIL PERUSAHAAN

2.1. Profil Perusahaan

2.1.1 Educa Studio

Educa Studio merupakan perusahaan startup yang

berspesialisasi dalam perangkat lunak dan aplikasi

edukasi. Berlokasi di Salatiga, Jawa Tengah, Indonesia.

Educa Studio merupakan perusahaan yang

mengembangkan aplikasi yang mendukung pendidikan.

Educa Studio berdiri sejak tahun 2012 dan

konsisten mengembangkan berbagai macam mobile

education games. Educa Studio juga menjadi Board Game

Publisher di Indonesia. Semua proses pendaftaran, proses

magang dan pelaporan kegiatan magang atau kerja praktik

di Educa Studio dialihkan melalui kerjasama dengan

Gamelab Indonesia.

2.1.2 Gamelab Indonesia

Gamelab Indonesia adalah lembaga pendidikan

dan pelatihan kerja yang didirikan oleh PT Educa

Sisfomedia Indonesia (Educa Studio). Dengan melihat

banyaknya permintaan talenta di bidang IT, Multimedia

dan Bidang lainnya, melalui Gamelab Indonesia

perusahaan ingin berkontribusi lebih banyak di bidang

pendidikan.

Gamelab Indonesia adalah sebuah platform

pengembangan skill dan karir berbasis teknologi digital

dengan materi-materi yang telah disediakan oleh trainer di

bidangnya. Gamelab memiliki berbagai program untuk

Page 28: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

8

10

meningkatkan skill yang terdiri dari program akademi dan

sertifikasi, magang untuk tujuan akademis (PKL,

Internship, Prakerin), pelatihan online, dan job portal.

2.2. Logo Perusahaan

Gambar 2.1. Logo Educa

Studio

Gambar 2.2. Logo Gamelab

Indonesia

2.3. Visi Misi Perusahaan

2.3.1. Visi

Educa Studio:

Memaksimalkan teknologi untuk menghasilkan

produk pendidikan yang bermanfaat sehingga tercapai

pemerataan pendidikan dimana dapat diakses dengan lebih

cepat, lebih murah, dan lebih mudah.

Gamelab Indonesia:

Mendekatkan dunia pendidikan dan dunia industri

dengan menyediakan program-program yang terus

diperbaiki. Mempercepat hal tersebut melalui optimalisasi

pendidikan. Membuat proses peningkatan skill menjadi

lebih mudah, lebih cepat dan lebih murah.

Page 29: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

10

10

2.3.2. Misi

Educa Studio:

Menampung talenta-talenta berbakat dibidangnya

dan memiliki passion di bidang pendidikan sehingga

menghasilkan solusi pendidikan yang maksimal baik dari

segi kebermanfaatan maupun dari segi komersialisasi.

Gamelab Indonesia:

1. Memberikan pelatihan dan workshop untuk

peningkatan skill melalui Akademi Gamelab.

2. Mempermudah member Gamelab untuk

mengikuti program magang dengan

mempertemukan mereka dengan berbagai

industri melalui program Magang Gamelab.

3. Mempertemukan talenta yang mumpuni dengan

dunia industri melalui program Karir Gamelab.

2.4. Struktur Organisasi

Gambar 2.3. Struktur Organisasi Perusahaan

2.5. Lokasi

Kantor Educa Studio, Jl. Gilingrejo No.10,

Gendongan, Kec. Tingkir, Kota Salatiga, Jawa Tengah

50743.

Page 30: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

11

10

BAB III

TINJAUAN PUSTAKA

3.1. Pemrograman Dart

Dart merupakan sumber terbuka, terstruktur, dan

bahasa pemrograman fleksibel yang dikembangkan oleh

Google. Bahasa pemrograman baru ini memungkinkan

programmer untuk mengembangkan aplikasi yang lebih

kompleks dengan pemeliharaan dan kinerja yang lebih

baik. Dart merupakan bahasa berbasis kelas, obyek

berorientasi dengan warisan sederhana, serta mendukung

antarmuka dan abstrak kelas. Dart sangat efektif untuk

pengembangan aplikasi, terutama di sisi klien. Tren saat

ini mengarah pada programmer yang mencoba untuk

mengembangkan sebagian besar tugas di sisi klien

memungkinkan server menjadi lebih kecil dan lebih cepat.

Dengan demikian, dengan server yang sangat sederhana,

lebih ringan untuk mengelola lebih banyak permintaan per

detik.

Dart memiliki sintaks C-style, sehingga bagi

programmer yang sudah pernah bekerja dengan

JavaScript, Java, PHP, C++ atau C#, akan dapat dengan

mudah menyesuaikan dengan Dart. Keunggulan dari Dart

salah satunya adalah performa terbaiknya. Keuntungan

lain adalah kesederhanaannya dan kejelasan ketika

digunakan dan ketika harus mempelajarinya. Keuntungan

besar lainnya adalah kemampuan untuk menggunakan

Integrated Development Environment (IDE). IDE yang

dikenal sebagai Dart Editor di mana programmer dapat

menemukan semua SDK, kelas, dan metode dengan

dokumentasi yang tersedia, dan perkakas untuk

mengopilasi dan menguji aplikasi [1].

Page 31: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

12

10

3.2. Core Library Dart

Dart memiliki seperangkat perpustakaan inti yang

menyediakan kebutuhan untuk banyak tugas pemrograman

sehari-hari seperti bekerja pada koleksi benda

(dart:collection), membuat perhitungan (dart:math), dan

enkoding/dekoding data (dart:converting). APIs tambahan

tersedia dalam paket kontribusi komunitas [2].

3.2.1. Multi-platform libraries

Berikut daftar dari inti perpustakaan Dart yang

bekerja pada semua platform Dart.

1. dart:async

Dukungan untuk asynchronous pemrograman, dengan

kelas-kelas seperti Future dan Stream.

2. dart:collection

Kelas dan utilitas yang melengkapi dukungan koleksi

di dart:core.

3. dart:convert

Enkoders dan decoders untuk mengubah antara

representasi data yang berbeda, termasuk JSON dan

UTF-8.

4. dart:core

Tipe bawaan, koleksi, dan fungsionalitas inti lainnya

untuk setiap program Dart.

5. dart:developer

Interaksi dengan perkakas pengembang seperti

debugger dan inspektur. (Catatan: Hanya Jit dan

dartdevc).

6. dart:math

Konstanta matematika dan fungsi, ditambah nomor

acak generator.

7. dart:typed_data

List yang efisien menangani ukuran data berukuran

tetap (misalnya, unsigned 8-byte integer) dan tipe

numerik SIMD.

Page 32: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

13

10

3.2.2. Native platform libraries

Berikut daftar dari inti perpustakaan Dart yang

bekerja pada Dart native platform (AOT - dan JIT-

compiled code).

1. dart:io

Berkas, socket, HTTP, dan I/O support lainnya untuk

aplikasi bukan-web.

2. dart:isolate

Pemrograman serentak menggunakan isolate: pekerja

independen yang mirip dengan utas.

3. dart:mirrors

Refleksi dasar dengan dukungan untuk introspection

dan dynamic invocation. (Catatan: Eksperimental, dan

hanya JIT (bukan Flutter)).

3.2.3. Web platform libraries

Berikut daftar dari pustaka inti Dart yang bekerja

pada platform Dart web (kode yang dikompile ke

JavaScript).

1. dart:html

Elemen HTML dan sumber daya lainnya untuk

aplikasi berbasis web.

2. dart:indexed_db

Penyimpanan nilai kunci sisi-klien dengan dukungan

untuk indeks.

3. dart:web_audio

Pemrograman audio dengan ketelitian tinggi di

browser.

4. dart:web_gl

Pemrograman 3D di browser.

3.3. Dart SDK

Dart SDK adalah seperangkat alat dan pustaka

untuk bahasa pemrograman Dart. Dart SDK memiliki

pustaka dan perkakas baris-perintah yang dibutuhkan

Page 33: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

14

10

untuk mengembangkan laman web, baris-perintah, dan

aplikasi server. Dart SDK menyertakan direktori lib untuk

perpustakaan Dart dan direktori bin yang memiliki alat

baris perintah berikut [3].

1. dart

Antarmuka baris-perintah untuk membuat,

memformat, menganalisis, pengujian, mengompilasi,

dan menjalankan kode Dart.

2. dartaotruntime

Waktu proses Dart untuk snapshot yang dikompilasi

AOT.

3. dartdoc

Generator dokumentasi API.

3.4. Flutter

Flutter merupakan software development kit

(SDK) yang diperkenalkan oleh Google pada tahun 2017

untuk membuat aplikasi yang dapat berjalan dalam sistem

operasi iOS, Android, web, dan desktop dengan satu basis

kode yaitu bahasa pemrograman Dart. Dalam build

aplikasi, pada framework Flutter semua kodenya disusun

dalam kode native (Android NDK, JIT, LLVM, AOT)

tanpa ada interpreter pada prosesnya sehingga proses

compile-nya menjadi lebih cepat. Flutter mendukung hot

reload kode selama pengembangan aplikasi yang

menghasilkan pemuatan ulang stateful aplikasi dengan

sangat cepat selama proses pengembangan [4].

Konsep inti dari Flutter adalah aplikasi dan

widget. Poin utama dalam membangun aplikasi

menggunakan Flutter adalah file lib/main.dart. File ini

Page 34: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

15

10

berisi metode main() yang memanggil metode runApp (…)

dari framework Flutter. Metode ini akan mengarahkan ke

perancangan widget. Widget teratas/ induk adalah akar

dari hierarki widget aplikasi. Widget dapat disesuaikan

menggunakan properti dan memiliki satu atau lebih

turunan. Komunikasi antar Flutter dan kode native

(program Dart) bekerja melalui channels. Baik komponen

native maupun komponen Flutter perlu menggunakan

kunci yang sama agar channel dapat mengarahkannya [5].

3.5. Visual Studio Code

Visual Studio Code merupakan teks editor untuk

bermacam-macam bahasa pemrograman yang ada,

termasuk Dart dan Flutter. VS Code banyak digunakan

karena merupakan teks editor ringan dengan eksekusi

aplikasi Flutter dan dukungan debug. Untuk menginstal

plugin Flutter dan Dart, dapat dilakukan dengan memulai

VS Code. Kemudian panggil View> Command Palette dan

pilih Ekstensi: Pasang Ekstensi. Ketik "dart" di bidang

pencarian ekstensi, pilih Dart dalam daftar, dan klik Instal.

Tahap ini juga berlaku untuk menginstal plugin Flutter

yang diperlukan [6].

Page 35: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

16

10

[Halaman ini sengaja dikosongkan]

Page 36: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

17

10

BAB IV

ANALISIS DAN PERANCANGAN SISTEM

4.1. Analisis Sistem

Pada bab ini akan dijelaskan mengenai tahapan dalam

membangun aplikasi perhitungan matematika numerik

yaitu analisis dari sistem yang akan dibangun. Penjelasan

dibagi menjadi dua bagian, yaitu definisi umum aplikasi

dan proses bisnis aplikasi.

4.1.1. Definisi Umum Aplikasi Secara umum aplikasi perhitungan matematika

numerik merupakan aplikasi kalkulator yang

mengitung beberapa perhitungan numerik untuk pelajar

sekolah menengah pertama hingga sekolah menengah

atas. Pengguna dapat melakukan perhitungan otomatis

untuk soal-soal numerik, diantaranya mengecek

bilangan prima, menghitung faktorial, menghitung

deret fibonacci, menghitung faktor persekutuan

terbesar dua bilangan, dan mengonversikan bilangan

berdasarkan basisnya.

4.1.2. Proses Bisnis

Use Case Diagram merupakan diagram yang

menggambarkan hubungan antar aktor dengan sistem

pada aplikasi. Dalam perancangan aplikasi perhitungan

matematika numerik terdapat satu aktor sebagai

pengguna aplikasi (pada umumnya pelajar) yang ingin

menghitung perhitungan numerik. Dalam

menggunakan aplikasi, diawali dengan user melihat

fitur-fitur yang tersedia di dalam aplikasi. User dapat

memilih fitur mana yang ingin dicoba, dan saat

mencoba masing-masing fitur, user diminta untuk

memasukkan input yang sesuai. Setelah memasukkan

Page 37: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

18

10

input yang sesuai, aplikasi akan menampilkan hasil

perhitungan. Adapun use case diagram pada aplikasi

tampak pada Gambar 4.1.

Gambar 4.1. Use Case Diagram Aplikasi

Perhitungan Matemetika Numerik

Activity Diagram merupakan diagram yang

menggambarkan alur proses dari interaksi user dengan

sistem pada aplikasi. Dalam aplikasi perhitungan

matematika numerik yang dirancang terdapat proses

aktivitas dalam menghitung perhitungan numerik. Berikut

diagram aktivitas masing-masing proses perhitungan pada

aplikasi.

A. Memilih Menu

User akan melihat halaman utama aplikasi ketika

pertama kali membuka aplikasi. Dalam halaman

utama, terdapat sidebar yang menampilkan daftar

fitur-fitur perhitungan numerik yang tersedia. User

dapat memilih fitur mana yang ingin dicoba.

Adapun activity diagram dalam memilih menu

dapat dilihat pada Gambar 4.2. berikut.

Page 38: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

19

10

Gambar 4.2. Activity Diagram Memilih Menu

B. Menghitung Fibonacci Suatu Bilangan

Fitur pertama pada aplikasi adalah menghitung

fibonacci. User akan diarahkan ke halaman

fibonacci, dimana dalam halaman tersebut user

diminta untuk memasukkan angka yang ingin

dihitung hasil deret fibonaccinya. Jika sudah

memasukkan input yang sesuai, user dapat

menekan tombol “Hasil”, dan apabila input benar,

maka aplikasi akan menampilkan hasil fibonacci

yang diminta. Namun, apabila input salah, maka

hasil tidak akan keluar. Adapun activity diagram

dalam menghitung fibonacci suatu bilangan dapat

dilihat pada Gambar 4.3. berikut.

Gambar 4.3. Activity Diagram Menghitung Fibonacci

Page 39: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

20

10

C. Mengecek Bilangan Prima

Dalam mengecek bilangan prima, user akan

diminta untuk memasukkan angka yang ingin dicek

apakah termasuk bilangan prima atau tidak. Untuk

mengeceknya, user hanya perlu menekan tombol

“Hasil” setelah memasukkan input. Apabila input

benar, maka aplikasi akan menampilkan hasil

pengecekan apakah angka yang dimasukkan

merupakan bilangan prima atau bukan. Jika input

user salah, maka hasil pengecekan tidak akan

muncul. Activity diagram dari pengecekan bilangan

prima dapat dilihat pada Gambar 4.4. berikut.

Gambar 4.4. Activity Diagram Mengecek Bilangan

Prima

D. Menghitung Faktorial Suatu Bilangan

Dalam menghitung faktorial suatu bilangan, user

perlu memasukkan angka yang ingin didapatkan

hasil faktorialnya. Selanjutnya user menekan

tombol “Hasil” untuk mendapatkan hasil

perhitungan. Apabila input benar, maka aplikasi

akan menampilkan hasil perhitungan faktorial dan

jika salah, maka hasil perhitungan tidak akan

muncul. Activity diagram dari perhitungan faktorial

suatu bilangan dapat dilihat pada Gambar 4.5.

Page 40: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

21

10

4.5. Activity Diagram Menghitung Faktorial Bilangan

E. Menghitung Faktor Persekutuan Terbesar Dua

Bilangan

Dalam menghitung faktor persekutuan terbesar dua

bilangan, user diminta untuk memasukkan dua

bilangan untuk dihitung faktor persekutuan

terbesarnya. Selanjutnya user menekan tombol

“Hasil” untuk menjalankan proses perhitungan.

Apabila input sesuai, aplikasi akan menampilkan

hasil perhitungan dan jika salah, maka hasil

perhitungan tidak akan muncul. Activity diagram

dari perhitungan faktor persekutuan terbesar dapat

dilihat pada Gambar 4.6.

4.6. Activity Diagram Menghitung Faktor Persekutuan

Terbesar

Page 41: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

22

10

F. Menkonvensi Basis Suatu Bilangan

Fitur terakhir dalam aplikasi perhitungan

matematika numerik adalah mengonversi basis

bilangan. Pada halaman konversi basis, user perlu

memasukkan tiga buah input. Diawali dengan

memasukkan angka yang ingin dikonversikan,

dilanjutkan dengan memasukkan basis dari

bilangan yang dimasukkan, dan diakhiri dengan

memasukkan basi tujuan untuk dikonversikan.

Selanjutnya user menekan tombol “Hasil” untuk

mendapat hasil konversi. Apabila input sesuai,

maka aplikasi akan menampilkan hasil

konversinya. Jika input user tidak sesuai, maka

hasil konversi tidak akan muncul. Activity diagram

dari konversi basis dapat dilihat pada Gambar 4.7.

4.7. Activity Diagram Mengkonversi Basis

4.2. Perancangan Sistem

Aplikasi perhitungan matematika numerik

dibangun dengan menggunakan Flutter, framework untuk

membangun aplikasi Android dan iOS dengan

menggunakan bahasa pemrograman Dart.

Page 42: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

23

10

Komponen utama dalam aplikasi Flutter adalah

sebagai berikut [7].

1. Dart Platform

Flutter ditulis dengan bahasa pemrograman Dart.

Saat menjalankan proses running atau debugging

aplikasi, Flutter menggunakan kompilasi tepat waktu

untuk melakukan hot reload, yang dapat

menambahkan hasil modifikasi kode langsung ke

aplikasi yang sedang berjalan.

2. Flutter Engine

Flutter engine ditulis dengan bahasa pemrograman

C++. Flutter engine dapat melakukn rendering

tingkat rendah menggunakan library grafik Skia

Google. Flutter engine juga berinteraksi dengan

perkakas pengembangan perangkat lunak (SDK)

spesifik-serambi (platform-specific) seperti yang

disediakan oleh Android dan iOS.

3. Foundation Library

Foundation library ditulis dengan bahasa

pemrograman Dart. Library tersebut menyediakan

fungsi dan kelas-kelas dasar yang digunakan untuk

membangun aplikasi menggunakan Flutter, seperti

API untuk berkomunikasi dengan engine.

4. Widget

Widget dalam Flutter adalah komponen antarmuka

user untuk membuat antarmuka aplikasi. Baik

pengaturan antarmuka hingga fungsi logika

matematika numerik terdapat di widget. Perhitungan

numerik pada aplikasi dan antarmukanya dibangun

menggunakan satu atau lebih anak (widget) yang

dibuat menggunakan widget turunannya.

Page 43: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

24

10

[Halaman ini sengaja dikosongkan]

Page 44: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

25

10

BAB V

IMPLEMENTASI SISTEM

Bab ini membahas tentang tahap implementasi yang

dilakukan pada studi kasus yang diberikan oleh perusahaan selama

kerja praktik.

5.1. Implementasi Program Numerik

Implementasi sebuah program perhitungan numerik

untuk membuat algoritma numerik dengan menu input untuk

memasukkan sampling data. Seluruh program tersimpan dalam

folder <aplikasi>/lib.

5.1.1. Home

Tampilan awal saat aplikasi dibuka diatur dalam file

home.dart yang di dalamnya terdapat kelas HomeView

yang mengatur tampilan home pada aplikasi. Sebelumnya,

pada file main.dart, hanya terdapat satu baris kode untuk

memanggil kelas yang berfungsi untuk memulai aplikasi,

void main() => runApp(HomeApps()); merupakan kode

yang memanggil kelas HomeApps untuk memulai aplikasi.

Saat masuk ke dalam kelas HomeApps, di dalamnya

dinyatakan beberapa state dalam wujud rute serta kelas

yang perlu dipanggil untuk menuju ke rute yang dimaksud.

Terdapat enam rute serta enam kelas yang

dideklarasikan yang dapat dilihat pada Potongan Kode 5.1. class _HomeAppsState extends State<HomeApps> { @override Widget build(BuildContext context) { return MaterialApp( title: 'APLIKASI NUMERIK', routes: { '/': (BuildContext _) => HomeView(),

Page 45: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

26

10

'/aaa': (BuildContext _) => AaaView(), '/bbb': (BuildContext _) => BbbView(), '/ccc': (BuildContext _) => CccView(), '/ddd': (BuildContext _) => DddView(), '/eee': (BuildContext _) => EeeView() }, initialRoute: '/', ); } }

Potongan Kode 5.1. Rute dan Kelas dalam Home

Rute ‘/’ mengarah ke kelas HomeView untuk mengatur

tampilan home aplikasi. Sedangkan rute ‘/aaa’ hingga ‘/eee’

mengarah ke masing-masing kelas algoritma numerik yang

menjadi fitur dalam aplikasi ini.

Berikut adalah Potongan Kode 5.2. yang menampilkan

home.dart yang mengatur tampilan home aplikasi. Tampilannya

sangat sederhana dan pada samping kiri atas dibuat drawer untuk

mengarahkan pengguna ke masing-masing halaman dari lima

perhitungan numerik yang ada, dimulai dari fibonacci hingga

konversi basis bilangan. class HomeView extends StatefulWidget { @override _HomeViewState createState() => _HomeViewState(); class _HomeViewState extends HomeControler { Image backgroundImage() { return Image.network("https://.....jpg",fit: BoxFit.cover), @override Widget build(BuildContext context) { return Scaffold( drawer: Drawer( child: ListView( children: <Widget>[ DrawerHeader( child: Column( children: <Widget>[Text(' ')], decoration: BoxDecoration( image: DecorationImage( image: NetworkImage('https://....jpg'), fit: BoxFit.cover, ListTile( onTap:()=>Navigator.of(context).pushNamed('/aaa') title: Text('Fibonacci'),

Page 46: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

27

10

leading: CircleAvatar(child: Icon(Icons.blur_on), ListTile( onTap:()=>Navigator.of(context).pushNamed('/bbb') title: Text('Bilangan Prima'), leading: CircleAvatar(child: Icon(Icons.blur_on), ListTile( onTap:()=>Navigator.of(context).pushNamed('/ccc') title: Text('Faktorial'), leading: CircleAvatar(child: Icon(Icons.blur_on), ListTile( onTap:()=>Navigator.of(context).pushNamed('/ddd') title: Text('FPB'), leading: CircleAvatar(child: Icon(Icons.blur_on), ListTile( onTap:()=>Navigator.of(context).pushNamed('/eee') title: Text('Base Conversion'), leading: CircleAvatar(child: Icon(Icons.blur_on), body: CustomScrollView( slivers: <Widget>[ SliverAppBar( pinned: true, snap: false, floating: false, expandedHeight: 200.0, elevation: 50, backgroundColor: Colors.purple, flexibleSpace: FlexibleSpaceBar(centerTitle: true,

title: Text('✪ Algoritma Numerik ✪', textAlign: TextAlign.center), background: backgroundImage(), SliverToBoxAdapter( child: SizedBox(height: 1000, child: Center( child: Text('Algoritma numerik ….)', style: TextStyle(fontSize: 20.0), textAlign: TextAlign.justify),

Potongan Kode 5.2. Tampilan Home Aplikasi dan Widget untuk

Mengarahkan ke Program Numerik

5.1.2. Primality Test

Fitur pertama dalam aplikasi ini adalah fitur untuk

mengecek apakah bilangan yang dimasukkan oleh pengguna

merupakan bilangan prima. Algoritma yang digunakan untuk

mengecek bilangan prima menerapkan metode Fermat.

Metode ini didasarkan pada Fermat’s Little Theorem yang

menyatakan bahwa “Jika n adalah bilangan prima, maka untuk

setiap a, 1<a<n-1, an-1 = 1(mod n) or an-1 % n = 1”. Fitur ini

Page 47: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

28

10

diawali dengan fungsi getTextInputData(), yaitu fungsi untuk

menyimpan masing-masing masukan user ke dalam variabel

yang akan digunakan dalam fungsi selanjutnya. Dalam

mengecek bilangan prima, terdapat dua fungsi, yaitu fungsi

prima() dan power(). Jika x adalah bilangan prima, maka

fungsi prima() akan mengembalikan nilai true. Jika x

bukanlah bilangan prima, maka ada dapat mengembalikan

nilai true atau false dengan melakukan iterasi berulang pada

fungsi power(). Penulisan algoritmanya dapat dilihat pada

Potongan Kode 5.3. berikut. import 'package:flutter/material.dart'; import 'dart:math'; import './controller.dart'; getTextInputData() { setState(() { xx = textFieldValueHolder.text; x = int.tryParse(xx ?? ""); if (prima(x, k)) result = "${x} merupakan bilangan prima"; else result = "${x} bukanlah bilangan prima"; power(var m, var n, var o) { num hasil = 1; m = m % o; while (n > 0) { if ((n & 1) == 1) hasil = (hasil * m) % o; n = n ~/ 2; m = (pow(m, 2)) % o; return hasil; prima(x, k) { Random random = new Random(); if (x == 1 || x == 4) return false; else if (x == 2 || x == 3) return true; else for (var a = 0; a < k; a++) { var i = random.nextInt(x - 2) + 2; if (power(i, x - 1, x) != 1) return false; return true; Widget build(BuildContext context) { return Scaffold( body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center,

Page 48: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

29

10

children: <Widget>[ Container( width: 280, padding: EdgeInsets.all(10.0), child: TextField( controller: textFieldValueHolder, autocorrect: true, decoration: InputDecoration(hintText: 'Input Angka'), RaisedButton( onPressed: getTextInputData, color: Color(0xffFF1744), textColor: Colors.white, padding: EdgeInsets.fromLTRB(10, 10, 10, 10), child: Text('Hasil'), Padding( padding: EdgeInsets.all(8.0), child: (Text("$result", style: TextStyle(fontSize: 20)))

Potongan Kode 5.3. Program Algoritma dan Widget untuk Primality

Test

5.1.3. Base Conversion

Fitur selanjutnya dalam aplikasi ini adalah fitur untuk

mengonversi bilangan berdasarkan pada basis yang

dimasukkan pengguna. Terdapat tiga input untuk dapat

menjalankan fitur ini, yaitu input bilangan yang ingin

dikonversikan, kemudian input basis bilangan tersebut, dan

input basis bilangan tujuan.

Dalam mengonversikan basis suatu bilangan, yang paling

dasar dan mudah adalah dengan mengonversikan dari dan/

atau ke basis desimal dan basis lainnya. Sedangkan jika ingin

mengubah dari basis non-desimal ke basis non-desimal

lainnya, perlu diubah terlebih dahulu ke basis desimal

sebelum ke basis lainnya.

Page 49: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

30

10

Sehingga metode konversi basis dalam program ini adalah:

X (basis non-desimal) Y (basis desimal)

X (basis non-desimal) Y (basis desimal) Z (basis non-

desimal).

Sama dengan fitur sebelumnya, dimana fungsi

getTextInputData() digunakan untuk menyimpan masing-

masing masukan user ke dalam variabel yang akan digunakan

dalam fungsi selanjutnya. Terdapat empat fungsi yang saling

berkaitan. Fungsi desi() adalah fungsi untuk mengonversi

bilangan dari basis non-desimal ke basis desimal. Fungsi

daridesi() adalah fungsi untuk mengonversi bilangan dari

basis desimal ke basis lainnya non-desimal. Jika baik basis

awal maupun basis tujuannya bukan desimal, maka perlu dua

fungsi tambahan, yaitu ubahkedesi() dan ubahdaridesi().

Kedua fungsi tersebut sama-sama berperan sebagai fungsi

transit, karena untuk mengonversikan basis bilangan non-

desimal ke basis non-desimal lainnya, perlu diubah terlebih

dahulu ke basis desimal dengan fungsi ubah dari/ ke desimal.

Setelahnya, baru bisa dilanjutkan lagi dengan fungsi desi()

dan daridesi() untuk mendapatkan hasil akhirnya. Penulisan

kodenya dapat dilihat pada Potongan Kode 5.4. berikut. import 'package:flutter/material.dart'; import './controller.dart'; getTextInputData() { setState(() { x = textFieldValueHolderA.text; ii = textFieldValueHolderI.text; //masih string i = int.tryParse(ii ?? ""); //ubah ke int oo = textFieldValueHolderO.text; //masih string o = int.tryParse(oo ?? ""); //ubah ke int if (o == 10) {desi(x, i); result = "Hasil konversi dari ${x}(basis ${i}) = ${desi(x, i)}(basis ${o})"; if (i == 10) {daridesi(x, o); result =

Page 50: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

31

10

"Hasil konversi dari ${x}(basis ${i}) = ${daridesi(x, o)}(basis ${o})"; if (i != 10 && o != 10) { int transit = desi(x, i); daridesi(transit.toString(), o); result = "Hasil konversi dari ${x}(basis ${i}) = ${daridesi(transit.toString(), o)}(basis ${o})"; desi(String x, int inBase) { int pjg = x.length; //INT int power = 1; //INT int numbe = 0; //INT for (int i = pjg - 1; i >= 0; i--) { if ((ubahkedesi(x[i]) as int) >= inBase) { print("Invalid number"); return -1; numbe += (ubahkedesi(x[i]) as int) * power; power = power * inBase; return numbe; daridesi(String x, int outBase) { String hasil = ""; int indeks = 0; while (int.parse(x) > 0) { if (hasil == null) print("bye"); else { hasil += ubahdaridesi(int.parse(x) % outBase); x = (int.parse(x) ~/ outBase).toString(); if (hasil == null) print("ok"); else hasil = new String.fromCharCodes(hasil.runes.toList().reversed); return hasil; ubahkedesi(var ini) { var good; var aa1 = ini.codeUnits; var a1 = aa1[0]; var aa2 = '0'.codeUnits; var a2 = aa2[0]; var aa3 = '9'.codeUnits; var a3 = aa3[0]; var aa4 = 'A'.codeUnits; var a4 = aa4[0]; if (a1 >= a2 && a1 <= a3) {good = a1 - a2; return good; else {good = a1 - a4 + 10; return good; ubahdaridesi(var ini) { var good; var aa2 = '0'.codeUnits; var a2 = aa2[0]; var aa4 = 'A'.codeUnits; var a4 = aa4[0]; Iterable<int> jadi1 = [ini + a2]; Iterable<int> jadi2 = [ini - 10 + a4]; if (ini >= 0 && ini <= 9) { good = new String.fromCharCodes(jadi1);

Page 51: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

32

10

return good; else {good = new String.fromCharCodes(jadi2); return good; Widget build(BuildContext context) { return Scaffold(body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Container(width: 280, padding: EdgeInsets.all(10.0), child: TextField( controller: textFieldValueHolderA, autocorrect: true, decoration: InputDecoration(hintText: 'Input Bilangan...'), Container(width: 280, padding: EdgeInsets.all(10.0), child: TextField( controller: textFieldValueHolderI, autocorrect: true, decoration: InputDecoration(hintText: 'inBase (basis awal)...'), Container(width: 280, padding: EdgeInsets.all(10.0), child: TextField( controller: textFieldValueHolderO, autocorrect: true, decoration: InputDecoration(hintText: 'outBase (basis tujuan)...'), RaisedButton( onPressed: getTextInputData, color: Color(0xffFF1744), textColor: Colors.white, padding: EdgeInsets.fromLTRB(10, 10, 10, 10), child: Text('Convert'), Padding(padding: EdgeInsets.all(8.0), child: (Text("$result", style: TextStyle(fontSize: 20))),

Potongan Kode 5.4. Program Algoritma dan Widget untuk Base

Conversion

Page 52: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

33

10

5.1.4. Faktor Persekutuan Terbesar

Fitur lainnya dalam operasi matematika numerik aplikasi

ini adalah mendapatkan FPB (faktor persekutuan terbesar)

dari dua bilangan yang dimasukkan pengguna. Metode yang

digunakan dalam menghitung FPB adalah algoritma

Euclidean. Dasar dari algortima ini adalah “Jika mengurangi

angka yang lebih kecil dari yang lebih besar, FPB tidak akan

berubah. Jadi, jika terus mengurangkan bilangan yang lebih

besar dari 2 berulang kali, akan didapat FPB. Alih-alih

pengurangan, jika dilakukan pembagian bilangan yang lebih

kecil, maka algoritma akan berhenti ketika didapatkan sisa 0”.

Diawali dengan fungsi getTextInputData() yang

digunakan untuk menyimpan masing-masing masukan user

ke dalam variabel yang akan digunakan dalam fungsi

selanjutnya. Dalam proses menghitung faktor persekutuan

terbesar hanya diperlukan satu fungsi dasar yaitu fpb() yang

akan terus mengiterasi hasil dari perhitungan selama bilangan

yang lebih besar masih bisa dibagi dengan bilangan yang lebih

kecil. Hasil FPB akan didapatkan apabila hasil

pembangiannya memiliki sisa = 0. Penulisan algoritmanya

dapat dilihat pada Potongan Kode 5.5. berikut. import 'package:flutter/material.dart'; import './controller.dart'; getTextInputData() { setState(() { aa = textFieldValueHolderA.text; //masih string a = int.tryParse(aa ?? ""); //ubah ke int bb = textFieldValueHolderB.text; //masih string b = int.tryParse(bb ?? ""); //ubah ke int result = "FPB dari $a dan $b adalah ${fpb(a, b)}"; fpb(var x, var y) { if (x == 0) return y; return fpb(y % x, x); Widget build(BuildContext context) { return Scaffold(body: Center(child: Column( mainAxisAlignment: MainAxisAlignment.center,

Page 53: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

34

10

children: <Widget>[ Container(width: 280, padding: EdgeInsets.all(10.0), child: TextField( controller: textFieldValueHolderA, autocorrect: true, decoration: InputDecoration(hintText: 'Input Bilangan A...'), Container(width: 280, padding: EdgeInsets.all(10.0), child: TextField( controller: textFieldValueHolderB, autocorrect: true, decoration: InputDecoration(hintText: 'Input Bilangan B...'), RaisedButton( onPressed: getTextInputData, color: Color(0xffFF1744), textColor: Colors.white, padding: EdgeInsets.fromLTRB(10, 10, 10, 10), child: Text('Hitung FPB'), Padding( padding: EdgeInsets.all(8.0), child: (Text("$result", style: TextStyle(fontSize: 20))),

Potongan Kode 5.5. Program Algoritma dan Widget untuk Faktor

Persekutuan Terbesar

5.1.5. Faktorial

Menghitung faktorial suatu bilangan non-negatif juga

menjadi salah satu fitur dalam aplikasi ini. Faktorial sendiri

merupakan hasil perkalian dari semua bilangan yang lebih

kecil dari n (input) secara terurut. Program faktorial ini dibuat

dengan algoritma yang mampu mengitung hasil faktorial yang

cukup besar tanpa memperlambat waktu kalkulasi. Solusinya

adalah dengan menyimpan hasil perhitungan masing-masing

digit ke dalam suatu array/ list.

Diawali fungsi getTextInputData() yang digunakan untuk

menyimpan masukan user ke dalam variabel yang akan

digunakan dalam fungsi selanjutnya. Terdapat dua fungsi

Page 54: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

35

10

dalam menghitung faktorial suatu bilangan. Fungsi faktorial()

digunakan untuk membuat array untuk menyimpan hasil

perkalian masing-masing urutan yang dihitung dalam fungsi

multiply(). Kegunaan array adalah untuk mengurangi beban

waktu dalam menghitung ulang perhitungan yang sebenarnya

sudah dihitung oleh sistem dan disimpan ke dalam array.

Penulisan algoritmanya dapat dilihat pada Potongan Kode 5.6.

berikut. getTextInputData() { setState(() { nn = textFieldValueHolder.text; //masih string n = int.tryParse(nn ?? ""); //ubah ke int faktorial(n); faktorial(n) { var res = List<dynamic>.generate(500, (i) => null); res[0] = 1; var size_res = 1; for (var x = 2; x <= n; x++) size_res = multiply(x, res, size_res); result = '$n! = '; for (var i = size_res - 1; i >= 0; i--) { result = result + res[i].toString(); multiply(var x, var res, var size_res) { var keri = 0; for (var i = 0; i < size_res; i++) { var prod = (res[i] * x) + keri; res[i] = prod % 10; keri = prod ~/ 10; while (keri != 0) { res[size_res] = keri % 10; keri = keri ~/ 10; size_res++; return size_res; Widget build(BuildContext context) { return Scaffold(body: Center(child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Container(width: 280, padding: EdgeInsets.all(10.0), child: TextField( controller: textFieldValueHolder, autocorrect: true,

Page 55: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

36

10

decoration: InputDecoration(hintText: 'Input Angka'), RaisedButton( onPressed: getTextInputData, color: Color(0xffFF1744), textColor: Colors.white, padding: EdgeInsets.fromLTRB(10, 10, 10, 10), child: Text('Hitung Faktorial'), Padding(padding: EdgeInsets.all(8.0), child: (Text("$result", style: TextStyle(fontSize: 20)))

Potongan Kode 5.6. Program Algoritma dan Widget untuk Faktorial

5.1.6. Fibonacci

Fitur terakhir dalam aplikasi ini adalah menghitung hasil

dari deret fibonacci suatu bilangan. Bilangan fibonacci

merupakan bilangan dalam deret bilangan bulat berikut.

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ……..

Secara matematis, deret fibonacci dari bilangan n dapat

dinyatakan sebagai berikut.

Fn = Fn-1 + Fn-2 dengan ketentuan dasar bahwa F0 = 0 dan

F1 = 1. Untuk memperkuat algoritma agar dapat menghitung

deret fibonacci dengan tangkas, maka diterapkan metode yang

sesuai dengan persamaan matriks berikut.

Gambar 5.2. Persamaan Matriks dalam Menghitung Deret

Fibonacci

Diawali fungsi getTextInputData() yang digunakan untuk

menyimpan masukan user ke dalam variabel yang akan

digunakan dalam fungsi selanjutnya. Fungsi untuk

menghitung hasil deret fibonacci adalah dengan fungsi fibo().

Jika mengalikan matriks M = {{1,1}, {1,0}} sebanyank n kali

dengan matriks itu sendiri (dengan kata lain menghitung

Page 56: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

37

10

pangkat (M, n)), maka akan didapatkan bilangan fibonacci (n

+ 1) sebagai elemen pada baris dan kolom (0, 0) dalam matriks

resultan. Penulisan algoritmanya dapat dilihat pada Potongan

Kode 5.7. berikut. import 'package:flutter/material.dart'; import './controller.dart'; getTextInputData() { setState(() { nn = textFieldValueHolder.text; //masih string n = int.tryParse(nn ?? ""); //ubah ke int result = 'Fibonacci dari $n = ${fibo(n)}'; fibo(n) { var bruh = List<int>.generate(1000, (i) => 0); if (n == 0) return 0; if (n == 1 || n == 2) return (bruh[n] = 1); if (bruh[n] != 0) return (bruh[n]); var k = (n & 1) == 1 ? ((n + 1) ~/ 2) : (n ~/ 2); bruh[n] = (n & 1) == 1 ? (fibo(k) * fibo(k) + fibo(k - 1) * fibo(k - 1)) : (2 * fibo(k - 1) + fibo(k)) * fibo(k); return (bruh[n]); Widget build(BuildContext context) { return Scaffold(body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Container( width: 280, padding: EdgeInsets.all(10.0), child: TextField( controller: textFieldValueHolder, autocorrect: true, decoration: InputDecoration(hintText: 'Input Angka'), RaisedButton( onPressed: getTextInputData, color: Color(0xffFF1744), textColor: Colors.white, padding: EdgeInsets.fromLTRB(10, 10, 10, 10), child: Text('Hasil Fibonacci'), Padding( padding: EdgeInsets.all(8.0), child: (Text("$result", style: TextStyle(fontSize: 20)))

Potongan Kode 5.7. Program Algoritma dan Widget Fibonacci

Page 57: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

38

10

[Halaman ini sengaja dikosongkan]

Page 58: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

39

10

BAB VI

PENGUJIAN DAN EVALUASI

Bab ini menjelaskan tahap uji coba terhadap aplikasi

program numerik yang telah dibuat. Pengujian dilakukan untuk

memastikan kesesuaian hasil dengan requirement yang diminta

dalam studi kasus.

6.1.Tujuan Pengujian

Pengujian dilakukan terhadap aplikasi

perhitungan matematika numerik guna menguji kesesuaian

hasil dan keefektifan algoritma yang digunakan dan

apakah aplikasi dapat dijalankan.

6.2.Kriteria Pengujian

Penilaian atas pencapaian tujuan pengujian

didapatkan dengan memperhatikan hasil yang diharapkan

sesuai dan algoritma yang digunakan efektif dengan

memberi input angka yang besar.

6.3.Skenario Pengujian

Skenario pengujian melibatkan dua pihak,

pertama oleh saya sendiri setelah membuat program

aplikasi dan langsung menguji hasilnya, lalu dilanjutkan

dengan pembimbing lapangan yaitu Sonny Michael

Wijaya dengan melakukan pengecekan ulang baik dari

hasil serta keefektifan algoritma yang digunakan.

Pengujian pertama dilakukan untuk program

numerik dalam konsol program kemudian dilanjutkan

dengan pengujian dalam aplikasi mobile yang telah dibuat

sebagai berikut:

Page 59: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

40

10

i. Tampilan Home Aplikasi

Tampilan awal saat aplikasi dibuka. Memperkenalkan

secara singkat apa itu perhitungan numerik serta fitur-

fitur perhitungan apa saja yang tersedia dalam aplikasi.

(a) (b)

Gambar 6.1. Tampilan Home Aplikasi: (a) Tampilan Awal

Aplikasi Dibuka, (b) Tampilan Sidebar yang Menampilkan

Fitur yang Tersedia

ii. Primality Test

Program ini untuk menentukan apakah masukan user

merupakan bilangan prima atau bukan bilangan prima.

User hanya perlu untuk memasukkan bilangan yang

ingin dicek, kemudian memencet tombol “Hasil”

untuk mendapatkan jawaban apakah termasuk

bilangan prima atau bukan.

Page 60: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

41

10

Gambar 6.2. Primality Test

(a) (b)

(c)

Gambar 6.3. Tampilan Aplikasi pada Fitur Primality Test: (a) Tampilan

Awal Fitur Primality Test, (b) Tampilan Saat Memasukkan Angka, (c)

Tampilan Saat Aplikasi Menampilkan Hasil Perhitungan

Page 61: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

42

10

iii. Base Conversion

Program ini untuk mengonversi inputan dari basis

tertentu ke basis lainnya. Basis yang tersedia pada

program ini adalah biner (basis 2) hingga vigesimal

(basis 20). Pengguna diminta untuk memasukkan 3

buah input yang masing-masing terdiri atas bilangan

yang ingin dikonversi, basis bilangan saat ini, dan

basis bilangan yang diinginkan.

Gambar 6.4. Base Conversion

(a) (b)

Page 62: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

43

10

(c)

Gambar 6.5. Tampilan Aplikasi pada Fitur Base Conversion:

(a) Tampilan Awal Fitur Base Conversion, (b) Tampilan Saat

Memasukkan Input, (c) Tampilan Saat Aplikasi

Menampilkan Hasil Konversi

iv. Faktor Persekutuan Terbesar

Program ini untuk menentukan faktor pesekutuan

terbesar dari dua bilangan yang dimasukkan.

Pengguna hanya perlu memasukkan bilangan a dan

bilangan b yang ingin dihitung faktor persekutuan

terbesarnya.

Gambar 6.6. Faktor Persekutuan Terbesar

Page 63: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

44

10

(a) (b)

(c)

Gambar 6.7. Tampilan Aplikasi pada Fitur Faktor

Persekutuan Terbesar: (a) Tampilan Awal Fitur FPB, (b) Tampilan Saat

Memasukkan Angka, (c) Tampilan Saat Aplikasi Menampilkan Hasil

Perhitungan

Page 64: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

45

10

v. Faktorial

Program ini untuk menghitung faktorial dari bilangan

yang dimasukkan. Program akan memberi output

berupa hasil dari perhitungan n!. Pengguna hanya

perlu memasukkan bilangan n yang ingin dihitung

nilai faktorialnya.

Gambar 6.8. Faktorial

(a) (b)

Page 65: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

46

10

(c)

Gambar 6.9. Tampilan Aplikasi pada Fitur Faktorial: (a) Tampilan Awal

Fitur Faktorial, (b) Tampilan Saat Memasukkan Angka, (c) Tampilan

Saat Aplikasi Menampilkan Hasil Perhitungan

vi. Fibonacci

Program ini untuk menghitung bilangan fibonacci dari

bilangan yang dimasukkan. Hasil dari program ini

adalah bilangan fibonacci (deret terakhir) dari bilangan

yang dimasukkan pengguna.

Gambar 6.10. Fibonacci

Page 66: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

47

10

(a) (b)

(c)

Gambar 6.11. Tampilan Aplikasi pada Fitur Fibonacci: (a) Tampilan

Awal Fitur Fibonacci, (b) Tampilan Saat Memasukkan Angka, (c)

Tampilan Saat Aplikasi Menampilkan Hasil Perhitungan

Page 67: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

48

10

6.4.Evaluasi Pengujian

Berdasarkan pengujian yang telah dipaparkan di

atas, maka pembimbing lapangan memberikan hasil

pengujian terhadap pengamatan mengenai algoritma dan

hasil yang diberikan pada masing-maisng program.

Tabel 6.1 di bawah ini menjelaskan hasil uji coba

terhadap program yang telah dibuat.

Kriteria Pengujian Hasil Pengujian

Aplikasi dapat dijalankan dan

menampilkan tampilan awal. Terpenuhi

Aplikasi dapat menjalankan

perhitungan fibonacci dengan

benar dan cepat.

Terpenuhi

Aplikasi dapat menjalankan

pengecekan bilangan prima

dengan benar dan cepat.

Terpenuhi

Aplikasi dapat menjalankan

perhitungan faktorial dengan

benar dan cepat.

Terpenuhi

Aplikasi dapat menjalankan

perhitungan faktor persekutuan

terbesar dengan benar dan cepat.

Terpenuhi

Aplikasi dapat menjalankan

konversi basis bilangan dengan

benar dan cepat.

Terpenuhi

Tabel 6.1. Hasil Evaluasi Pengujian

Page 68: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

49

10

BAB VII

KESIMPULAN DAN SARAN

7.1. Kesimpulan

Kesimpulan yang didapat dari eksplorasi Flutter

dan Dart yaitu aplikasi berhasil dibuat dengan

menggunakan framework Flutter dan bahasa pemrograman

Dart, serta aplikasi telah berjalan sesuai dengan studi kasus

yang diberikan, dan Flutter dapat mempermudah serta

mempercepat proses pengembangan aplikasi.

7.2. Saran

Saran untuk pembuatan aplikasi perhitungan

matematika numerik adalah sebagai berikut:

a. Jika meggunakan Dart versi 2.0 ke atas,

pengembang perlu meningkatkan pemahaman

akan null-safety sehingga secara default tipe-tipe

data yang gunakan adalah non-nullable (tidak

boleh berisi null). Untuk mengindikasikan bahwa

variabel tersebut bisa berisi null, maka perlu

ditambahkan opreator ? pada saat melakukan

deklarasi variabel.

b. Untuk pengembangan sistem berikutnya perlu

dilakukan explorasi framework cross-platform

lainnya dalam membangun aplikasi mobile untuk

dapat diketahui framework cross-platform mana

yang paling cepat dipahami dan

diimplementasikan oleh developer.

Page 69: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

50

10

[Halaman ini sengaja dikosongkan]

Page 70: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

51

10

DAFTAR PUSTAKA

[1] Belchin, Moises, dan Patricia Juberias. 2015. “Web

Programming with Dart”. Apress. New York.

[2] Dart. “Core libraries | Dart”. dart.dev/guides/libraries. 5

Februari 2021. Web. Diakses pada 20 April 2021. [3] Dart. “Dart SDK overview | Dart”. dart.dev/tools/sdk. 21

Februari 2021. Web. Diakses pada 20 April 2021.

[4] Krisnada, Filian Enggar, dan Radius Tanone. 2019. “Aplikasi

Penjualan Tiket Kelas Pelatihan Berbasis Mobile

menggunakan Flutter”. Jutisi.

http://dx.doi.org/10.28932/jutisi.v5i3.1865.

[5] Vogella. “What is the Flutter Application Framework”.

vogella.com/tutorials/Flutter/article.html. Web. Diakses pada

29 April 2021.

[6] Syaputra, Rizky, dan Yusmi Putra Wiraganda. 2019. “Happy

Flutter: Membuat Aplikasi Android dan iOS dengan Mudah

menggunakan Flutter”. Udacoding. Jakarta.

[7] Indo Wiki. “Arsitektur Flutter (perangkat lunak)”.

https://indo.wiki/content/Flutter%20(perangkat%20lunak)/A

rsitektur.html. Web. Diakses pada 10 Mei 2021.

Page 71: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

52

10

[Halaman ini sengaja dikosongkan]

Page 72: Eksplorasi Framework Flutter dengan Bahasa Pemrograman

53

10

BIODATA PENULIS

Nama : Miranda Manurung

Tempat, Tanggal Lahir : Palembang, 19 April 1999

Jenis Kelamin : Perempuan

Telepon : +6281273482745

Email : [email protected]

AKADEMIS

Kuliah : Departemen Teknik Informatika –

FTEIC , ITS

Angkatan : 2017

Semester : 8 (Delapan)