Proyek Pertama Kita: Membuat Aplikasi Kartu Nama Digital yang Cantik

📅 12 Agustus 2026 ☕ 2 min read
Proyek Pertama Kita: Membuat Aplikasi Kartu Nama Digital yang Cantik

Proyek Pertama Kita: Membuat Aplikasi Kartu Nama Digital yang Cantik

Setelah memahami dasar pengubahan state dan navigasi antar layar, saatnya menggabungkan dasar-dasar tata letak (layouting) di Flutter untuk membangun sebuah proyek nyata.

Artikel ini membahas cara membangun Kartu Nama Digital yang rapi, modern, dan estetis menggunakan kombinasi widget Column, CircleAvatar, Card, dan ListTile.

Komponen Utama yang Digunakan

  • SafeArea: Memastikan seluruh tampilan berada di area aman layar seluler (tidak tertutup notch atau kamera atas).

  • CircleAvatar: Widget bawaan Flutter untuk membuat foto profil berbentuk lingkaran.

  • Card & ListTile: Komponen berdesain Material Design yang memberikan efek bayangan (elevasi) serta susunan ikon dan teks yang rapi secara otomatis.

Kode Lengkap Proyek

Dart
 
import 'package:flutter/material.dart';

void main() {
  runApp(const KartuNamaApp());
}

class KartuNamaApp extends StatelessWidget {
  const KartuNamaApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        backgroundColor: Colors.indigo.shade900,
        body: SafeArea(
          child: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                // 1. Foto Profil / Avatar
                const CircleAvatar(
                  radius: 50.0,
                  backgroundColor: Colors.white,
                  child: Icon(
                    Icons.person,
                    size: 60,
                    color: Colors.indigo,
                  ),
                ),
                const SizedBox(height: 12),

                // 2. Nama Lengkap
                const Text(
                  'Budi Pratama',
                  style: TextStyle(
                    fontSize: 28.0,
                    color: Colors.white,
                    fontWeight: FontWeight.bold,
                  ),
                ),

                // 3. Profesi / Judul
                Text(
                  'FLUTTER DEVELOPER',
                  style: TextStyle(
                    fontSize: 14.0,
                    color: Colors.indigo.shade100,
                    letterSpacing: 2.5,
                    fontWeight: FontWeight.w600,
                  ),
                ),

                // 4. Garis Pemisah
                SizedBox(
                  height: 20.0,
                  width: 150.0,
                  child: Divider(
                    color: Colors.indigo.shade200,
                  ),
                ),

                // 5. Kartu Informasi Telepon
                const Card(
                  margin: EdgeInsets.symmetric(vertical: 8.0, horizontal: 25.0),
                  child: ListTile(
                    leading: Icon(Icons.phone, color: Colors.indigo),
                    title: Text(
                      '+62 812 3456 7890',
                      style: TextStyle(fontSize: 16.0),
                    ),
                  ),
                ),

                // 6. Kartu Informasi Email
                const Card(
                  margin: EdgeInsets.symmetric(vertical: 8.0, horizontal: 25.0),
                  child: ListTile(
                    leading: Icon(Icons.email, color: Colors.indigo),
                    title: Text(
                      'budi.pratama@example.com',
                      style: TextStyle(fontSize: 16.0),
                    ),
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

Bedah Struktur UI

  1. Pengaturan Posisi Tengah (Center & MainAxisAlignment.center): Menjaga agar seluruh elemen dalam Column berada tepat di tengah layar secara vertikal maupun horizontal.

  2. SizedBox untuk Spasi dan Garis: Mengatur jarak vertikal antar elemen dengan presisi, serta menetapkan lebar spesifik (width: 150.0) untuk widget Divider.

  3. Penggunaan ListTile dalam Card: Struktur bawaan ListTile mempermudah penataan ikon di sebelah kiri (leading) dan teks utama di sampingnya (title) tanpa perlu mengatur tata letak manual dengan Row.


+