Materi View
Materi View
Sejarah flutter
Flutter merupakan software development kit (sdk) yang dikembangkan oleh google.
Awalnya sdk ini ber nama "sky" dan dijalankan di OS android. Diresmikan pada saat KTT
pengembangan dart, dengan tujuan bisa merender 120 fps secara konsisten.
Pada tahun 2017, dia me-release secara public versi alpha 0.0.6.
Pada tahun 2018, flutter me-release versi 1.0 yang memungkinan dapat digunakan pada
banyak platform, yaitu desktop, web, dan mobile. Namun secara stable, flutter masih
digunakan dalam platform mobile, yaitu android dan ios.
Pada tahun 2021, flutter me-release versi stable 2.0 untuk penggunaan null-safety pada
dart SDK, dan meluncurkan versi stable untuk web.
Arsitektur Flutter
Flutter memiliki arsitektur yang lumayan keren gan. Dia mengelompokkan beberapa
layer. Mungkin bisa dilihat pada gambar di bawah ya. Kalau ingin lihat gambar yang tidak
pecah silakan langsung ke sumbernya. Sudah ane cantumkan di bawah gambar.
No. 1 / 54
Text Editor
Tidak ada batasan IDE atau text editor tertentu yang dapat digunakan untuk ngoding
flutter. Kita bebas memilih. TAPI, jika ente tidak ingin ribet, lebih baik install android
studio, why? because ini akan mempermudah kita dalam proses installasi. Terutama
untuk emulator android pun android sdk-nya.
Keunikan Flutter
Flutter merupakan tool yang unik, faktanya:
Flutter dapat membuat aplikasi cross platform yang bisa berjalan dengan mulus
atau bahasa gaulnya (smooth). Keunikannya, kita bisa menghubungkan kode
dart ke kode native platform tertentu. Misal ente membutuhkan koneksi
No. 2 / 54
bluetooth yang hanya digunakan di android, so menambah permission atau
semacamnya dapat kita hubungkan dengan bahasa kottlin.
Flutter berbasis widget, jadi almost everything is widget, bahkan ente bisa
membuat widget sendiri.
Object oriented UI, flutter tidak menggunakan Markup Language. So, ini juga
menjadi salah satu faktor utama kenapa flutter begitu cepat.
No. 3 / 54
Hal Mendasar yang Wajib Diketahui
2. Widget
Widget adalah komponen dasar pada flutter, dan memang ini ditekankan oleh flutter.
Disetiap widget, selalu ada context yang merepresentasikan dimana widget berada.
3. Basic Design
Jika sudah mempelajari OOP Dart, kita wajib mengetahui dasar-dasar pembuatan design.
Jika kita memiliki pengalaman dalam web design, atau pengalaman dalam pembuatan UI
& UX design seperti pada aplikasi figma dan sejenisnya. Maka sebagian besar pasti akan
mudah dimengerti. Disini saya membuat list untuk dasar-dasar pembuatan design yang
wajib kita ketahui.
Color
Color atau warna dituliskan dengan menggunakan kode. Penulisan warna dalam
pemrograman ada beberapa macam. tolong disimak ya.
No. 4 / 54
dengan angka 0 hingga 255
c. RGBA - Red Green Blue Alpha, sama dengan RGB namun alpha disini
digunakan untuk merepresentasikan transparency warna, nilai Alpha
biasanya 0 sampai dengan 1.
Nah, hal-hal diatas merupakan beberapa cara untuk menulis warna pada web
design. Untuk flutter bagaimana? Flutter memiliki object sendiri yang bernama
Color() object ini hanya menerima parameter integer, jadi penulisan warna pada
flutter:
a. Hexa - Color(0xff000000) akan menghasilkan warna hitam.
b. Untuk opacity atau alpha kita bisa menggunakan .withOpacity() lalu
masukkan angka transparency-nya.
Typography
No. 5 / 54
Kotak doang kan. Selanjutnya kita bisa mengoles dengan border radius. seperti
ini contohnya
Sudah kelihatan ya border radius seperti apa. Lalu ada lagi hal dasar yang wajib
diketaui dalam basic design. Yaitu, box shadow. Contohnya:
Sudah terlihat ya, box shadow itu bayangan. Ini juga sangat penting nantinya.
4. Library Manager
Jika kita belum mengetahui apa itu library, library merupakan kumpulan kode untuk
membantu pekerjaan kita. Nah, flutter ini memiliki *library manager* sendiri namanya
pub.dev . Cara installasi library-nya pun tidak ribet. Nanti kita akan lanjut pada tulisan
artikel selanjutnya ya. disini cuma pengetahuan saja. agar tidak terlalu banyak tulisan,
mengurangi kebosanan membaca, dan agar web ini tidak terlalu banyak merender text,
hihi.
5. State Management
Flutter tidak berbasis pada Document Object Model (DOM), melainkan berbasis pada
state manager. So, buat kita yang memiliki background web developer dan tidak ada
pengalaman pada react, dan beberapa framework javascript yang menggunakan state
manager tentunya harus beradaptasi lagi. Namun, dibandingkan DOM, state lebih simple
dan mudah di maintain. State digunakan sebagai global variable yang men-triger
No. 6 / 54
perubahan UI ketika.
No. 7 / 54
Perbedaan StatelessWidget dengan
StatefulWidget
Jika kita mengenal react.js , react.js memiliki hal mendasar yaitu component. Sedangkan
flutter sendiri memiliki hal mendasar yang dinamakan widget. Widget merupakan sebuah
object yg akan di jalankan oleh framework flutter untuk membangun sebuah user
interface.
Dalam flutter, kita bisa membuat custom widget dengan kerangka yangg berisikan
widget-widget yang kita inginkan. Dan disini kita akan membahas dua tipe custom widget
yang wajib kita ketahui untuk membuat sebuah UI, yaitu SatelessWidget dan
StatefulWidget.
Penjelasan StatelessWidget
StatelessWidget adalah sebuah custom widget untuk membuat UI dengan attribute-
attribute yang tidak bisa berubah/bermutasi (immutable). Mari kita coba contoh
penggunaan statelessWidget, dan silakan pencet tombol run untuk melihat hasilnya
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
No. 8 / 54
body: Center(
child: MyWidget(),
),
),
);
}
}
hello world
hasil dari UI yang dirender pada kodingan diatas, tidak bisa dirubah oleh event apapun,
sebab tidak ada state yang dapat merender ulang UI.
Penjelasan StatefulWidget
Kali ini kita akan membahas apa itu StatefullWidget, kenapa perlu dan bagaimana cara
penggunaannya.
StatefullWidget merupakan sebua object class yang diapat kita gunakan untuk membuat
User Interface (antarmuka) yang dinamis dan dapat berubah-ubah bedasarkan event dan
keinginan kita. Mari kita lihat contoh di bawah.
No. 9 / 54
// Copyright (c) 2019, the Dart project authors. Please see the
AUTHORS file
// for details. All rights reserved. Use of this source code is
governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:flutter/material.dart';
const MyHomePage({
Key? key,
required this.title,
}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
No. 10 / 54
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}
}
No. 11 / 54
Untuk lebih jelasnya, kita menjalankan kode tersebut pada Codepen. Nah, pada contoh
kode diatas, jika kita run, kita dapat membuat sebuah UI yang bisa berubah bedasarkan
button + , untuk menambah nilai yang ditengah. Silakan dicoba.
mari kita lihat penjelasan gambar di bawah dan kita bedah kodenya.
No. 12 / 54
Penjelasan (poin penting ada pada nomor 5 sampai 14)
No. 13 / 54
ke StatefulWidget.
13. widget.title() : Merupakan event klik pada tombol +
No. 14 / 54
Instalasi Flutter dengan Vs Code
Pastikan VSCode sudah terinstal pada komputer kita. Dengan menggunakan plugin
Flutter official dan Dart, teks editor vscode bisa kita sulap untuk membuat dan
membangun project flutter.
1. Buka VSCode
Langkah yang pertama adalah buka aplikasi VSCode.
Ketika kita memasang plugin flutter, harusnya plugin dart juga akan terinstall secara
otomatis. Tapi untuk memastikan lebih jauh, anda bisa mencari plugin Dart dan lihat
apakah sudah terinstall atau tidak.
No. 16 / 54
4. Pastikan flutter telah terinstall tanpa error
Untuk memastikan apakah plugin flutter sudah working terpasang tanpa error:
2. Ketik "Flutter"
No. 17 / 54
Cara Menginstall dan Menghubungkan Nox
dengan VSCode
a. Download Nox
b. Install Nox
Jika unduhan sudah selesai klik open atau install file exe nox
No. 18 / 54
Klik I have read and accept the Nox license agreement, lalu klik install
Tunggu proses installasi sampai 100 % kemudian klik start jika sudah
No. 19 / 54
Setelah loading, maka akan terbuka tampilan awal dari Emulator Nox
No. 20 / 54
c. Ubah Tampilan No. 21 / 54
c. Ubah Tampilan
Untuk mengubah tampilan Nox menjadi mode smartphone / mobile phone,
caranya yaitu klik System Settings
Klik save settings, klik oke jika diminta untuk me restart Nox. Setelah restart
maka tampilan nox akan menjadi tampilan smartphone bukan tablet lagi.
No. 22 / 54
2. Menghubungkan Nox dengan VSCode
Selanjutnya kita akan menyeting Nox App Player agar bisa terhubung dengan VSCode.
Caranya yaitu :
No. 24 / 54
b. Aktifkan Mode Pengembang
Setelah proses restart selesai dan Nox App Player sudah terbuka kembali pilih
setting (terdapat pada folder tools)
No. 25 / 54
Scroll ke bawah cari menu tentang tablet
No. 26 / 54
Ketuk atau klik 7 kali pada nomor bentukan, sehingga muncul notifikasi
“sekarang anda adalah seorang pengembang “
No. 27 / 54
Silahkan kembali lagi ke menu utama setelan, lalu pilih opsi pengembang
No. 28 / 54
Ceklis Debugging USB, klik oke pada jendela izinkan melakukan debug USB
No. 29 / 54
No. 30 / 54
Sekarang debugging USB sudah aktif
No. 31 / 54
c:
cd\
cd C:\Program Files\Nox\bin
start /b Nox.exe
timeout 5
nox_adb.exe connect 127.0.0.1:62001
c:
cd\
cd C:\Program Files\Nox\bin
timeout 5
nox_adb.exe kill-server
No. 32 / 54
Nb. Perhatikan!
Minimum requirements:
OS: Windows 7 SP1 64-bit, Windows 8.1 64-bit, Windows 10 64-bit, Windows
11 64-bit
Free storage: 1.64 GB
Pre-installed tools:
Windows PowerShell 5.0 or newer
Git 2.x
Recommend specs
No. 33 / 54
OS: Windows 10 64-bit
CPU: Intel Core i5-8400
Memory: 16 GB RAM
Free storage: 20 GB SSD
Tools: Windows PowerShell 5.0+, Git 2.x
No. 34 / 54
Install SDK Flutter
2. Kemudian Extract file yang sudah didownload pada drive C: seperti digambar.
3. Update path komputer
Klik Windows + E > Klik kanan This PC > Properties
Klik Advance system settings
No. 35 / 54
Masuk Tab Advanced
No. 36 / 54
Klik Path > Klik Edit
No. 37 / 54
Klik Browse.. arahkan ke drive C:\flutter\bin Kemudian Ok
No. 38 / 54
Klik Path (System Variable) > Klik Edit
No. 39 / 54
Klik Browse.. arahkan ke drive C:\flutter\bin Kemudian Ok
No. 40 / 54
Klik Ok semua pada Window yang terbuka, kemudian Restart PC
No. 41 / 54
Install Android Studio
No. 42 / 54
3. Selanjutnya Konfiramasi Flutter untuk tempat instalasi android studio.
No. 43 / 54
Usahakan semua sudah tanpa issue.
4. Buka Aplikasi Android Studio, Settings SDK
5. Jika sudah selesai, kita setting visual studio nya. download https://visualstudio.
microsoft.com/downloads/ ENterprise 2022
6. Jika sudah selesai buka aplikasinya, kemudian masuk ke tab avaible. Klik install
No. 44 / 54
7. Install!
No. 45 / 54
Test Drive Flutter Di VSCode
Langkah-langkahnya adalah:
2. Ketik Flutter
3. Pilih menu Flutter > New Application Project
No. 46 / 54
5. Masukkan nama projek
No. 47 / 54
7. Edit lib/main.dart menjadi seperti ini.
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
No. 48 / 54
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) :
super(key: key);
@override
State<MyHomePage> createState() => _MyHomePageState();
}
void _incrementCounter() {
setState(() {
// This call to setState tells the Flutter framework
that something has
// changed in this State, which causes it to rerun the
build method below
// so that the display can reflect the updated values.
If we changed
// _counter without calling setState(), then the build
method would not be
// called again, and so nothing would appear to happen.
_counter++;
No. 49 / 54
});
}
@override
Widget build(BuildContext context) {
// This method is rerun every time setState is called, for
instance as done
// by the _incrementCounter method above.
//
// The Flutter framework has been optimized to make
rerunning build methods
// fast, so that you can just rebuild anything that needs
updating rather
// than having to individually change instances of
widgets.
return Scaffold(
appBar: AppBar(
// Here we take the value from the MyHomePage object
that was created by
// the App.build method, and use it to set our appbar
title.
title: Text(widget.title),
),
body: Center(
// Center is a layout widget. It takes a single child
and positions it
// in the middle of the parent.
child: Column(
// Column is also a layout widget. It takes a list
of children and
// arranges them vertically. By default, it sizes
itself to fit its
// children horizontally, and tries to be as tall as
its parent.
//
// Invoke "debug painting" (press "p" in the
console, choose the
// "Toggle Debug Paint" action from the Flutter
Inspector in Android
No. 50 / 54
// Studio, or the "Toggle Debug Paint" command in
Visual Studio Code)
// to see the wireframe for each widget.
//
// Column has various properties to control how it
sizes itself and
// how it positions its children. Here we use
mainAxisAlignment to
// center the children vertically; the main axis
here is the vertical
// axis because Columns are vertical (the cross axis
would be
// horizontal).
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
), // This trailing comma makes auto-formatting nicer
for build methods.
);
}
}
No. 51 / 54
9. Jika Nox emulator sudah terbuka, maka kita tinggal memilih Nox Emulator
sebagai peramban untuk menjalankan program. Klik kotak kecil bawah, pilih SM
G965N (nama emulator)
Atau kita bisa pilih Chrome supaya komputer kita lebih ringan.
No. 52 / 54
k. Edit Kode + Testing Hot Reload
No. 53 / 54
Ganti menjadi "kita sudah menekan tombol sebanyak:" .
Nb.
Untuk membersihkan emulator, kita bisa masuk ke folder projeknya.
Kemudian ketik flutter clean
No. 54 / 54