Container
Widget container adalah sebuah widget yang bertugas sebagai pembungkus widget lain.
Dinamakan container karena nantinya, ia bisa memiliki properti-properti bingkai seperti:
• padding
• margin
• border
• border radius
• box shadow
• dan lain-lain
Ilustrasi:
Pada ilustrasi di atas, kotak berwarna putih adalah child widget. Sedangkan semuanya dari margin,
border, dan padding adalah widget container.
Coba Container : Tampilkan TeksUtama yg pernah di buat pd kuliah sebelumnya, lalu bungkus returnnya yg
semula berupa widget Columns dengan widget container, (lihat slide berikut) perhatikan efeknya
Seperti pada ilustrasi sebelumnya, padding adalah sebuah // ganti left, top, right, dan bottom dengan angka
jarak antara content (dalam hal ini child widget) dengan EdgeInsets.fromLTRB(left, top, right, bottom)
border.
Kita bisa menambahkannya dengan menambahkan Atau dengan mendefinisikan padding vertical dan padding horizontal:
arguman Container.padding:
EdgeInsets.symmetric(vertical: 20, horizontal: 50),
@override
Widget build(BuildContext context) { Atau menggunakan fungsi EdgeInsets.only() untuk mendefinisikan
return Container( arah tertentu saja yang diberi padding:
padding: EdgeInsets.all(20),
decoration: BoxDecoration( EdgeInsets.only(top: 50, right: 150)
border: Border.all(
color: Colors.blue, Kira-kira output-nya adalah seperti tangkapan layar berikut:
width: 5,
),
), Coba 3 :
... Sekarang
) coba
} mainkan
padding
Properti Margin Sama seperti padding, Anda juga bisa menggunakan variasi lain untuk
Kebalikan dari padding, margin adalah jarak antara border dengan mendefinisikan margin, seperti:
dunia luar.
Kita bisa mendefinisikannya dengan menambahkan // ganti left, top, right, dan bottom dengan angka
argumen margin saat membuat objek Container seperti berikut: EdgeInsets.fromLTRB(left, top, right, bottom)
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.symmetric(vertical: 20, horizontal: 50),
margin: EdgeInsets.all(20),
decoration: BoxDecoration(
color: Colors.lightBlue[50],
border: Border.all(
color: Colors.blue,
Coba 5 :
width: 5, Sekarang
), coba
), mainkan
background
... color
)
}
Properti Border Radius
Dengan box shadow, kita bisa memberikan efek 3D kepada boxShadow: [BoxShadow(
suatu objek, atau kita juga bisa mempertegas tumpukan color: Colors.black12,
berbagai objek: mana objek yang ada di atas dan mana yang spreadRadius: 5,
ada di bawah. blurRadius: 5,
offset: Offset.fromDirection(-15, -53)
Agar bayangan lebih terlihat, kita hapus property border, )],
kemudian kita tambahkan property boxShadow. Test :
RaisedButton
Button ini digunakan jika button yang kita buat ingin terlihat, flash sahdow
akan muncul ketika di click
IconButton
Flash background berbentuk lingkaran akan terlihat ketika button di klik.
OutlineButton
Button dengan border (tepi) lebih tebal dan backgroundnya menjadi tidak
terlihat (opaque) pada saat di klik.
DropdownButton
Button ini digunakan untuk melakukan pemilihan, menunjukkan menu
pada saat di klik.
BackButton
Widget IconButton diperukan untuk mengunakan button ini, flash
background berbentuk linkaran pada saat button ini diclick.
CloseButton
Widget IconButton diperlukan untuk menggunakan button ini di dikonten
apapu yang bisa ditutup.
FloatingActionButton
Sebuah tombol yang terletak mengambang (hover) diatas konten,
disarankan digunakan sekali saja, dapat mengganti warna background dan
foregroundnya, kita dapat menggunakan nama konstruktor 'extended'
untuk membuat button ini menjadi lebih besar dan lebar.
Multi Child Layout Widget Column
Layout (tata letak) Widget digunakan untuk tata letak dari child widget, pada Flutter ada
dua jenis Layout Widget, yang pertama adalah Single Child Layout dan yang kedua adalah
Multi Child Layout.
Multi Child Layout akan menggunakan properti children bertipe array Widget,
Multi-Child Layout Widget digunakan untuk meletakkan child widget yang akan
ditampilkan jika lebih dari satu, adapun widget ini terdiri dari: Column, Row, Flex,
ListView, Stack. Layout ini baik digunakan untuk komponen yang sudah kita ketahui
ukurannya, seperti buttons, textboxes. dll, layout ini juga baik digunakan ketika widget
yang kita letakkan pada layout ini tidak meng-overflow layar, maksud dari overflow adalah
ukuran widget lebih besar dari layar smartphone. Layout ini kurang baik untuk diguankan
pada komponen yang ukurannya dinamis, misalnya Widget Text yang akan menampilkan
data yang diambil dari server, dimana kita tidak tahu ukuran (jumlah) data yang akan
ditampilkan, jika kita mendapat kasus seperti itu maka lebih baik kita menggunakan Table,
karena Table dapat menangani text overflow dengan baik.
body: Column( children: <Widget>[
MyTextWidget('First Text', Colors.redAccent, 48.0),
Terkadang kita menghadapi kasus dimana ketika menggunakan Layout Widget ini, child
MyTextWidget('Second Text', Colors.blueAccent, 48.0),
yang kita buat tidak pas pada area dari layar smartphone, Hal ini membuat garis kuning
MyTextWidget('Third Text', Colors.greenAccent, 48.0),
hitam (chevrons) terlihat seperti gambar berikut disertai keterangan error pada console.
], ),
Expanded
Widget ini digunakan jika kita ingin memenuhi ruang yang ada pada, Misalnya: Row,
Column, atau Flex, jika child widget yang menggunakan Expanded lebih dari 1 maka
ukurannya akan dibagi sesuai dengan flex factor.
Bagaimana menentukan widget yg diperlukan Design
Layout
Jika kita lihat gambar diatas, maka kita akan menggunakan : Perhatikan Setelah Widget Scaffold, yaitu Container, widget inilah yang akan
• Widget TextBox, Button, Column, Row, membungkus semua widget yang akan ditampilkan, tujuan dari widget Container ini
• kemudian ada jarak dari tepi layar ke widget TextField, kita bisa adalah agar bisa memberikan padding pada widget didalamnya, kemudian child dari
menggunakan padding, widget Container adalah Column, pada widget ini kita gunakan
seketsa sederhananya adalah sebagai berikut: MainAxisAlignmen.Center untuk membuat child nya berada di tenggah, kemudian
didalam widget Column terdapat 3 buah widget Row, pada Row ke 3, kita gunakan
MainAxisAlignment.End, sehingga widget Button akan diletakkan ke kanan.
1 3
2
PageRouteBuilder pageRoute = PageRouteBuilder (
initialRoute: "page1",
onPressed: () {
routes: { Navigator.of(context).pop();
"page1": (context) => Page1(), }
"page2": (context) => Page2(),
"page2a": (context) => Page2a(),
"page2b": (context) => Page2b(),
onPressed: () {
Navigator.pushNamed(context, "page2b");
onPressed: () { }
Navigator.pushNamed(context, "page2");
},
Prak Navigasi 7 :
+ directory.dart Challenge.. Rakitlah aplikasi
Signup & login dgn navigasi seperti Main.dart
gmbr ini.. Potongan Sourcecode :
https://www.nintyzeros.com/2021/0 import 'package:flutter/material.dart';
1/flutter-login-signup.html import 'home.dart';
import 'login.dart';
import 'signup.dart';
void main() {
runApp(MyApp());
}