Materi Pembelajaran Flutter: Memahami Widget





 Materi Pembelajaran Flutter: Memahami Widget

1. Pengertian Flutter

Flutter adalah framework open-source yang dikembangkan oleh Google untuk membuat aplikasi dengan satu kode program yang dapat dijalankan pada berbagai platform, seperti Android, iOS, Web, dan Desktop.

Flutter menggunakan bahasa pemrograman Dart.

2. Apa Itu Widget?

Widget adalah komponen dasar dalam Flutter yang digunakan untuk membangun tampilan dan fungsi aplikasi.

Hampir semua bagian aplikasi Flutter merupakan widget, misalnya:

Teks → Text

Tombol → ElevatedButton

Gambar → Image

Kotak/wadah → Container

Baris → Row

Kolom → Column

Ikon → Icon

Sederhananya:

Widget = bagian-bagian yang digunakan untuk membangun aplikasi Flutter.

3. Jenis-Jenis Widget

Secara umum, widget Flutter dapat dibagi menjadi dua jenis:

A. StatelessWidget

StatelessWidget adalah widget yang tidak memiliki data atau keadaan yang berubah selama widget tersebut ditampilkan.

Contoh:

import 'package:flutter/material.dart';


class MyApp extends StatelessWidget {

  const MyApp({super.key});


  @override

  Widget build(BuildContext context) {

    return const Text(

      'Halo Flutter!',

    );

  }

}

Cocok digunakan untuk tampilan yang sederhana dan tidak berubah berdasarkan interaksi pengguna.

B. StatefulWidget

StatefulWidget adalah widget yang dapat berubah ketika terjadi suatu peristiwa atau interaksi pengguna.

Contohnya:

Counter bertambah ketika tombol ditekan.

Checkbox berubah ketika dipilih.

Tampilan berubah ketika data diperbarui.

Contoh sederhana:

import 'package:flutter/material.dart';


class CounterPage extends StatefulWidget {

  const CounterPage({super.key});


  @override

  State<CounterPage> createState() => _CounterPageState();

}


class _CounterPageState extends State<CounterPage> {

  int angka = 0;


  void tambah() {

    setState(() {

      angka++;

    });

  }


  @override

  Widget build(BuildContext context) {

    return Scaffold(

      body: Center(

        child: Column(

          mainAxisAlignment: MainAxisAlignment.center,

          children: [

            Text(

              'Angka: $angka',

              style: const TextStyle(fontSize: 25),

            ),

            ElevatedButton(

              onPressed: tambah,

              child: const Text('Tambah'),

            ),

          ],

        ),

      ),

    );

  }

}

Perbedaan

StatelessWidget

StatefulWidget

Tampilan relatif tetap

Tampilan dapat berubah

Tidak menggunakan setState()

Dapat menggunakan setState()

Cocok untuk teks, ikon, tampilan sederhana

Cocok untuk counter, form, checkbox, dll.

4. Widget Dasar yang Sering Digunakan

Text

Digunakan untuk menampilkan tulisan.

Text('Halo Dunia');

Container

Digunakan sebagai wadah untuk mengatur ukuran, warna, margin, padding, dan dekorasi.

Container(

  width: 200,

  height: 100,

  color: Colors.blue,

  child: const Text('Flutter'),

);

Row

Menyusun widget secara horizontal.

Row(

  children: [

    Icon(Icons.home),

    Text('Beranda'),

  ],

);

Column

Menyusun widget secara vertikal.

Column(

  children: [

    Text('Nama'),

    Text('Alamat'),

    Text('Kelas'),

  ],

);

Image

Digunakan untuk menampilkan gambar.

Image.network(

  'https://example.com/gambar.jpg',

);

Icon

Digunakan untuk menampilkan ikon.

Icon(Icons.favorite);

ElevatedButton

Digunakan untuk membuat tombol.

ElevatedButton(

  onPressed: () {

    print('Tombol ditekan');

  },

  child: const Text('Klik Saya'),

);

5. Widget Tree

Flutter menggunakan konsep Widget Tree, yaitu widget disusun seperti struktur pohon.

Contohnya:

MaterialApp

   └── Scaffold

       ├── AppBar

       │ └── Text

       │

       └── Center

            └── Column

                 ├── Text

                 ├── Icon

                 └── ElevatedButton

Contoh kode:

MaterialApp(

  home: Scaffold(

    appBar: AppBar(

      title: const Text('Aplikasi Saya'),

    ),

    body: Center(

      child: Column(

        mainAxisAlignment: MainAxisAlignment.center,

        children: [

          const Text('Halo Flutter'),

          const Icon(Icons.phone_android),

          ElevatedButton(

            onPressed: () {},

            child: const Text('Mulai'),

          ),

        ],

      ),

    ),

  ),

);

6. Scaffold

Scaffold merupakan struktur dasar halaman aplikasi Material Design.

Biasanya berisi:

Scaffold

├── AppBar

├── Body

├── FloatingActionButton

├── Drawer

└── BottomNavigationBar

Contoh:

Scaffold(

  appBar: AppBar(

    title: const Text('Home'),

  ),

  body: const Center(

    child: Text('Selamat Datang'),

  ),

);

7. BuildContext

BuildContext merupakan informasi mengenai posisi sebuah widget di dalam Widget Tree.

Contohnya:

Widget build(BuildContext context) {

  return const Text('Hello');

}

BuildContext juga sering digunakan untuk mengakses informasi seperti tema, ukuran layar, atau melakukan navigasi.

8. Kenapa Widget Penting?

Memahami widget sangat penting karena:

Semua tampilan Flutter dibangun menggunakan widget.

Membantu membuat UI aplikasi.

Memudahkan pengaturan layout.

Membantu membuat aplikasi interaktif.

Widget dapat disusun dan digunakan kembali.

Mempermudah pengembangan aplikasi yang kompleks.

9. Kesimpulan

Widget merupakan fondasi utama dalam Flutter. Setiap komponen aplikasi, mulai dari teks, tombol, gambar, ikon, hingga struktur halaman, dibangun menggunakan widget.

Widget yang paling penting untuk dipahami oleh pemula adalah:

Text → Container → Row → Column → Image → Icon → ElevatedButton → Scaffold → StatelessWidget → StatefulWidget.

Dengan memahami widget dan Widget Tree, kita akan lebih mudah membuat tampilan aplikasi Flutter yang terstruktur dan interaktif.

Komentar

Postingan populer dari blog ini

Dunia Mobile Development: Dari Pengguna HP Menjadi Pembuat Aplikasi

BMI (Body Mass Index): Pengertian, Rumus, dan Cara Menghitungnya