Flutter Dasar
Pertemuan #2
oleh : k4ilham & LT
Toko Kopi Haqiqi Cilebut, 13 Juli 2019
Materi Pertemuan#2
- Basic Dart
- Parsing Data
- Card Widget
- StateFul Widget
Basic Dart
Heloo Bro!
main() {
print('Hello Bro!');
}
Variabel & Tipe Data
void main(){
// membaut variabel dengan tipe data
String nama = "Dian";
int umur = 23;
double tinggi = 180.43;
bool isMenikah = false;
// membuat veriabel dengan kata kunci var
var alamat = "Lombok, Indonesia";
// mencetak variabel
print("Nama saya $nama. Umur $umur tahun. Tinggi sekitar $tinggi cm.");
print("Menikah: $isMenikah");
print("Alamat: $alamat");
}
Operator
main() {
print("PROGRAM OPERATOR");
double a = 5;
double b = 2;
double hasil;
// operator penjumlahan
hasil = a + b;
print("$a + $b = $hasil");
// operator pengurangan
hasil = a - b;
print("$a - $b = $hasil");
// operator perkalian
hasil = a * b;
print("$a * $b = $hasil");
// operator pembagian
hasil = a / b;
print("$a / $b = $hasil");
// operator sisa bagi
hasil = a % b;
print("$a % $b = $hasil");
}
If
void main(){
print("### Program Kasir ###");
int totalBelanja = 200000;
if( totalBelanja >= 100000 ){
print("Selamat anda dapat hadiah!");
}
}
If Else
main(){
print("=== Login ===");
String password = "teh";
// cek password yang diinputkan
if(password == "kopi"){
print("Selamat datang bos!");
} else {
print("Kamu siapa? Pergi sana!");
}
}
If Majemuk
main(){
print("*** Program Grade ***");
int nilai = 64;
String grade;
if(nilai >= 90) grade = "A+";
else if(nilai >= 80) grade = "A";
else if(nilai >= 70) grade = "B+";
else if(nilai >= 60) grade = "B";
else if(nilai >= 50) grade = "C+";
else if(nilai >= 40) grade = "C";
else if(nilai >= 30) grade = "D";
else if(nilai >= 20) grade = "E";
else grade = "F";
print("Grade: $grade");
}
Switch Case
main(){
print("~~~ Quote Harian ~~~");
String hari = "sabtu";
String quote;
switch(hari){
case "senin": {
quote = "Mari kita mulai dari senin";
break;
}
case "selasa": {
quote = "Selesaikan tugas, dan bersantailah";
break;
}
case "rabu": {
quote = "Serbu! hari ini penuh semangat!";
break;
}
case "kamis": {
quote = "Meski hujan gerimis, aku belajar coding";
break;
}
case "jumat": {
quote = "Jum'at berkah";
break;
}
case "sabtu": {
quote = "Tenangkan jiwa di hari akhir!";
break;
}
case "minggu": {
quote = "Selamat berlibur!";
break;
}
default: {
quote = "Hari yang anda masukan salah!";
}
}
print(quote);
}
Operator Ternary
main(){
print("apakah kamu suka aku?");
String jawab = 't';
// menggunakan operator ternary sebagai ganti if/esle
var hasil = (jawab == 'y') ? "menikah" : "jomblo lagi";
print("Selamat kamu $hasil");
}
For
main(){
print("Jumlah perulangan: ");
int n = 10;
for(int i = 1; i <= n; i++){
print("Perulangan ke-$i");
}
}
For Each
main() {
var languages = ["C", "C++", "Java", "Dart", "Javascript"];
for(var language in languages){
print(language);
}
print("Total bahasa: ${languages.length}");
}
Function
int luasPersegi(int sisi){
return sisi * sisi;
}
main(){
print("--- Program luas persegi ---");
print("Input panjang sisi: ");
int s = 5;
// memanggil fungsi
int hasil = luasPersegi(s);
print("Luas: $hasil");
}
Class
class Person{
String _name;
var _address;
String getName(){
return this._name;
}
void setName(String name){
this._name = name;
}
String getAddress(){
return this._address;
}
void setAddress(String address){
this._address = address;
}
}
// fungsi main
main(){
var dian = new Person();
dian.setName("Dian");
dian.setAddress("Lombok");
print("Nama: ${dian.getName()}");
print("Alamat: ${dian.getAddress()}");
}
Parsing Data
import 'package:flutter/material.dart';
import './page1.dart';
void main(){
runApp(new MaterialApp(
title: "Pertemuan 2",
home: page1(),
));
}
main.dart
import 'package:flutter/material.dart';
class page1 extends StatelessWidget{
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Parsing Data"),
),
);
}
}
page1.dart
Card Widget
body: Container(
child: new Card(
child: new Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
new Icon(
Icons.home,
color: Colors.pink,
size: 100.0,
),
],
),
),
),
Custom Card
class customCard extends StatelessWidget{
customCard({
this.icon,
this.teks,
this.warnaIcon,
});
final IconData icon;
final String teks;
final Color warnaIcon;
@override
Widget build(BuildContext context) {
}
}
Tambahkan dibawah class page 1
class customCard extends StatelessWidget{
customCard({
this.icon,
this.teks,
this.warnaIcon,
});
final IconData icon;
final String teks;
final Color warnaIcon;
@override
Widget build(BuildContext context) {
return new Container(
padding: new EdgeInsets.all(5.0),
child: new Card(
child: new Column(
children: <Widget>[
new Icon(
icon,
color: warnaIcon,
size: 100.0,
),
new Text(
teks,
style: new TextStyle(fontSize: 20.0),
)
],
),
),
);
}
}
Pindahkan Widget Card pada page1 ke customcard
Panggil Widget customCard pada body
body: new Container(
child: new Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
new customCard(
icon: Icons.home,
teks: "Home",
warnaIcon: Colors.brown ,
),
new customCard(
icon: Icons.favorite,
teks: "Favourite",
warnaIcon: Colors.pink ,
),
new customCard(
icon: Icons.place,
teks: "Place",
warnaIcon: Colors.blue ,
),
new customCard(
icon: Icons.settings,
teks: "Setting",
warnaIcon: Colors.black ,
),
],
),
)
Latihan
import 'package:flutter/material.dart';
class page2 extends StatelessWidget{
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Movie Card"),
),
body: new Container(
child: new Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
new customCard(
xImage: "images/spiderman.jpg",
xIcon: Icons.favorite,
xIconColor: Colors.pink ,
xIconSize: 25.0,
xTitle: "Spider-Man: Far from Home",
xSubtitle: "Peter Parker dan teman-temannya melakukan perjalanan musim panas ke Eropa. Namun, mereka hampir tidak dapat beristirahat - Peter harus setuju untuk membantu Nick…",
xCaptionButtonLeft: "Detail",
xCaptionButtonRight: "Favourite",
),
new customCard(
xImage: "images/alita.jpg",
xIcon: Icons.favorite,
xIconColor: Colors.pink ,
xIconSize: 25.0,
xTitle: "Alita: Battle Angel",
xSubtitle: "Ketika Alita terbangun tanpa ingatan tentang siapa dia di dunia masa depan yang tidak dia kenal, dia ditangkap oleh Ido, seorang dokter yang penuh kasih yang menyadari…",
xCaptionButtonLeft: "Detail",
xCaptionButtonRight: "Favourite",
),
],
),
)
);
}
}
class customCard extends StatelessWidget{
final IconData xIcon;
final Color xIconColor;
final double xIconSize;
final String xTitle,xSubtitle,xCaptionButtonRight, xCaptionButtonLeft,xImage;
customCard({
this.xIcon,
this.xIconColor,
this.xIconSize,
this.xImage,
this.xTitle,
this.xSubtitle,
this.xCaptionButtonLeft,
this.xCaptionButtonRight,
});
@override
Widget build(BuildContext context) {
return Center(
child: Card(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
ListTile(
leading: Image.asset(xImage,fit: BoxFit.fill,),
title: Text(xTitle),
subtitle: Text(xSubtitle),
trailing: Icon(
xIcon,
color: xIconColor,
),
),
ButtonTheme.bar(
child: ButtonBar(
children: <Widget>[
FlatButton(
child: new Text(xCaptionButtonLeft),
onPressed: () {},
),
FlatButton(
child: new Text(xCaptionButtonRight),
onPressed: () {},
),
],
),
),
],
),
),
);
}
}
page2.dart
External Package
pubspec.yaml
Tambahkan Package
english_words: ^3.1.5
kemudian klik Package Get
english word
import 'package:flutter/material.dart';
import 'package:english_words/english_words.dart';
class page3 extends StatelessWidget{
@override
Widget build(BuildContext context) {
final kataAcak = WordPair.random();
return new Scaffold(
appBar: new AppBar(
title: new Text("English Word"),
),
body: new Center(
child: new Text(kataAcak.asCamelCase),
),
);
}
}
Stateful Widget
Merupakan Widget yang dapat berubah dinamis. Jadi apapun Widget yang berubah, ya itu disebut dengan Stateful Widget.
Contohnya kita membuat sebuah aplikasi dimana jika setiap kita memencet tombol “+1”. Angka yang ada di tengah tampilan akan bertambah satu.
StatefulWidget
class kataAcak extends StatefulWidget {
@override
kataAcakState createState() => new kataAcakState();
}
class kataAcakState extends State<kataAcak> {
@override
Widget build(BuildContext context) {
final WordPair kata = new WordPair.random();
return new Text(kata.asUpperCase);
}
}
Source Lengkap
import 'package:flutter/material.dart';
import 'package:english_words/english_words.dart';
class page3 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("StateFul Widget"),
),
body: new Center(
child: new kataAcak(),
),
);
}
}
class kataAcak extends StatefulWidget {
@override
kataAcakState createState() => new kataAcakState();
}
class kataAcakState extends State<kataAcak> {
@override
Widget build(BuildContext context) {
final WordPair kata = new WordPair.random();
return new Text(kata.asUpperCase);
}
}
Bonus : iOS Style
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import './hal1.dart';
void main(){
runApp(
new CupertinoApp(
home: hal1(),
)
);
}
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
class hal1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: Text(
"Pertemuan 2"),
),
child: Center(
child: Text(
"Halo Ilham"),
),
);
}
}
main.dart
hal1.dart
Bonus : Flutter Animation
Bonus :Flutter Web
meetap_flutter_basic_02
By Maulana Ilham
meetap_flutter_basic_02
meetap_flutter_basic_02
- 1,127