Last Updated on August 11, 2021 by
Pada artikel sebelumnya, Codekey sudah membahas widget pada Flutter. Kali ini, Codekey akan membahas dua widget penting dan powerful yang ada di Flutter, yaitu Flutter row dan Flutter column.
Flutter row adalah widget yang digunakan untuk menampilkan child widget dalam bentuk horizontal, sementara column adalah widget yang digunakan untuk menampilkan child widget dalam bentuk vertikal. Jika Anda tertarik dengan pembahasan tentang Flutter row dan Flutter column. Pastikan Anda menyimak artikel ini.
Table of Contents
Widget Row dan Column Flutter
Row dan Column Flutter (baris dan kolom Flutter) adalah dua widget penting dalam pemrograman Dart di framework Flutter. Widget ini memungkinkan Anda menyelaraskan child widget secara horizontal dan vertikal sesuai kebutuhan. Seperti yang kita ketahui bahwa ketika kita mendesain UI (User Interface) apa pun dalam Flutter, kita perlu mengatur kontennya secara row dan column sehingga widget Baris dan Kolom ini diperlukan saat mendesain UI.
Contructor Row Flutter
Berikut ini adalah contoh konstruktor dari Row Class:
Row( {Key key, MainAxisAlignment mainAxisAlignment: MainAxisAlignment.start, MainAxisSize mainAxisSize: MainAxisSize.max, CrossAxisAlignment crossAxisAlignment: CrossAxisAlignment.center, TextDirection textDirection, VerticalDirection verticalDirection: VerticalDirection.down, TextBaseline textBaseline: TextBaseline.alphabetic, List<Widget> children: const <Widget>[]} )
Constructor Column Flutter
Column( {Key key, MainAxisAlignment mainAxisAlignment: MainAxisAlignment.start, MainAxisSize mainAxisSize: MainAxisSize.max, CrossAxisAlignment crossAxisAlignment: CrossAxisAlignment.center, TextDirection textDirection, VerticalDirection verticalDirection: VerticalDirection.down, TextBaseline textBaseline, List<Widget> children: const <Widget>[]} )
Properti Widget Row dan Column Flutter
Berikut ini adalah properti yang ada di dalam Row dan Column Flutter
- Child: properti ini mengambil di dalam List<Widget>, yaitu daftar widget untuk ditampilkan di dalam widget row dan column.
- clipBehaviour: properti ini memegang kelas klip sebagai objek untuk memutuskan yang mana konten di dalam row atau column harus diklip atau tidak.
- crossAxisAlignment: crossAxisAlignment mengambil crossAxisAlignment enum, sebagai objek bagaimana child widget harus ditempatkan di crossAxisAlignment. Untuk row itu vertikal dan untuk column itu horizontal.
- direction: properti ini memegang row dan column sebagai object Axis enum untuk memutuskan direction yang digunakan di dalam sumbu utama. Dalam row dan column hal ini pun sudah dipastikan.
- mainAxisAlignment: properti ini mengambil enum MainAxisAlignment sebagao objek untuk memutuskan bagaimana para child widget akan ditempatkan di dalam mainAxisAlignment. Untuk row ia ditempatkan horizontal, dan column ditempatkan vertikal.
- mainAxisSize: properti ini memutuskan ukuran dari sumbu utama yang diambil dalam MainAxisSize enum sebagai objek.
- runtimeType: properti ini memberitahukan tipe runtime dari widget row atau column.
- textBaseline: properti ini bertanggungjawab untuk menyelaraskan teks di dalam widget row atau colum dengan masing-masing ke sebuah baseline.
- textDirection: properti ini mengontrol arah teks dari widget row atau column yang mana bisa dari kiri ke kanan secara default atau sebaliknya.
- verticalDirection: properti ini mengambil di dalam VerticalDirection enum sebagai objek untuk menentukan child widget yang harus di layer.
Flutter Row
Flutter row membuat sebuah array horizontal dari child. Anda dapat menyelaraskan konten sesuai pilihan kami dengan menggunakan mainAxisAlignment dan crossAxisAlignment. Main axis row adalah horizontal dan sumbu silang ke Main axis row adalah vertikal. Kita bisa menyelaraskan anak secara horizontal menggunakan MainAxisAlignment dan secara vertikal menggunakan CrossAxisAlignment di baris itu.
Terlepas dari mainAxisAlignment dan crossAxisAlignment ini, kami juga memiliki beberapa properti lain seperti mainAxisSize,textDirection,verticalDirection dll. tetapi kami akan fokus pada dua ini (mainAxisAlignment dan crossAxisAlignment).
Kita dapat melakukan penyelarasan konten dengan menggunakan properti di bawah ini:
- start : Tempatkan para child dari awal baris.
- end : Tempatkan para child di akhir baris.
- center : Tempatkan para child di tengah barisan.
- spaceBetween : Tempatkan ruang secara merata di antara child.
- spaceAround : Tempatkan ruang secara merata di antara child dan juga setengah dari ruang itu sebelum dan sesudah child pertama dan terakhir.
- spaceEvenly : Tempatkan ruang secara merata di antar child dan juga sebelum dan sesudah child pertama dan terakhir.
Kita akan melihat perbedaannya dengan bantuan contoh. Misalkan kita ingin menyelaraskan konten sedemikian rupa sehingga ada ruang di sekitar child dalam satu baris main.dart:
import 'package:flutter/material.dart'; void main() { runApp(NewApp()); } class NewApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Belajar Flutter', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(), debugShowCheckedModeBanner: false, ); } } class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Belajar Flutter"), ), body: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children:<Widget>[ Container( decoration:BoxDecoration( borderRadius:BorderRadius.circular(8), color:Colors.blue ), child: Text("Flutter",style: TextStyle(color:Colors.white,fontSize:18),), ), Container( decoration:BoxDecoration( borderRadius:BorderRadius.circular(8), color:Colors.red ), child: Text("For",style: TextStyle(color:Colors.white,fontSize:25),), ), Container( decoration:BoxDecoration( borderRadius:BorderRadius.circular(10), color:Colors.green ), child: Text("Geeks",style: TextStyle(color:Colors.white,fontSize:25),), ) ] ), ); } }
Flutter Row Padding
Pada Flutter row, Anda dapat menetapkan Flutter Row Padding. Contoh Flutter Row Padding adalah sebagai berikut:
/Use mainAxisAligment: MainAxisAlignment.spaceEvenly,
//After initializing the row
new Container( alignment: FractionalOffset.center, child: new Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: <Widget>[ new FlatButton( child: new Text('Don\'t have an account?', style: new TextStyle(color: Color(0xFF2E3233))), ), new FlatButton( child: new Text('Register.', style: new TextStyle(color: Color(0xFF84A2AF), fontWeight: FontWeight.bold),), onPressed: moveToRegister, ) ], ), ),
Flutter Column
Column berguna untuk membuat array vertikal dari widget child. Dalam hal ini juga kami memiliki mainAxisAlignment dan crossAxisAlignment. Pada column, child disejajarkan dari atas ke bawah. Main axis atau sumbu utama adalah vertikal dan cross axis atau cross axis adalah horizontal.
MainAxisAlignment menyelaraskan child secara vertikal dan CrossAxisAlignment menyelaraskan secara horizontal di column tersebut. Kita dapat menyelaraskan konten dengan menggunakan properti yang sama seperti yang dibahas di atas dalam row (mulai, akhir, spasiBetween, spaceAround, spaceEvenly).
Kita akan melihat perbedaannya dengan bantuan contoh di bawah ini. Misalkan kita ingin menyelaraskan konten sehingga kita memiliki ruang di sekitar anak-anak . Tetapkan mainAxisAlignment sebagai spaceAround seperti yang ditunjukkan di bawah ini:
Column( mainAxisAlignment: MainAxisAlignment.spaceAround, children:<Widget>[ Container( decoration:BoxDecoration( borderRadius:BorderRadius.circular(8), color:Colors.blue ), child: Text("Belajar Flutter",style: TextStyle(color:Colors.white,fontSize:18),), ), Container( decoration:BoxDecoration( borderRadius:BorderRadius.circular(8), color:Colors.red ), child: Text("Selamat Belajar",style: TextStyle(color:Colors.white,fontSize:18),), ), Container( decoration:BoxDecoration( borderRadius:BorderRadius.circular(8), color:Colors.green ), child: Text("GeeksForGeeks",style: TextStyle(color:Colors.white,fontSize:18),), ) ] ),
Anda juga dapat menyelaraskan konten menggunakan kombinasi mainAxisAlignment dan crossAxisAlignment untuk Flutter row and column. Di sini Codekey mengambil contoh Row, atur mainAxisAlignment sebagai MainAxisAlignment.spaceAround dan crossAxisAlignment sebagai CrossAxisAlignment.stretch.
Dengan melakukan ini(crossAxisAlignment.stretch), tinggi baris akan sama dengan tinggi badan karena kita hanya memiliki satu baris.
Kekurangan Flutter row and column:
Row tidak memiliki pengguliran horizontal sehingga ketika sejumlah besar anak dimasukkan dalam satu baris yang tidak dapat masuk ke dalam baris maka itu akan memberi kita pesan Overflow (misalnya: Right overflowed by 560px ).
Column tidak memiliki pengguliran vertikal sehingga ketika sejumlah besar anak dimasukkan ke dalam satu kolom yang ukuran total anak-anaknya lebih dari tinggi total layar maka akan memberi kita pesan Meluap (misalnya: Bawah meluap sebesar 684px). Ikuti terus tutorial tutorial ngoding hanya di https://codekey.id/
Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.