Lewati ke konten utama

BAB 59. UI/UX DESIGN SYSTEM (MATERIAL 3)

Prinsip Desain

PrinsipImplementasi
Ramah PelajarBahasa sederhana, ikon intuitif
ModernMaterial 3 dengan warna hidup
BersihWhitespace cukup, tidak padat
Mudah DipahamiHierarki visual jelas
KonsistenToken desain dipakai di seluruh aplikasi

Design Philosophy

TemuBelajar menggunakan Material 3 dari Google dengan pendekatan Friendly Academic Interface — antarmuka yang terasa seperti teman belajar, bukan aplikasi formal yang kaku.


Prinsip Visual Utama

flowchart LR
A["🎨 Color System\n(Dynamic Color M3)"] --> APP["📱 TemuBelajar\nUI"]
B["✍️ Typography\n(Poppins / Roboto)"] --> APP
C["📐 Spacing System\n(4px grid)"] --> APP
D["🌟 Component Library\n(Material 3)"] --> APP
E["♿ Accessibility\n(WCAG 2.1 AA)"] --> APP

style APP fill:#2563EB,color:#fff

Komponen Material 3 yang Digunakan

KomponenPenggunaan
App BarJudul halaman + navigasi kembali
Navigation BarBottom nav: Home, Request, Chat, Profile
Card (Elevated)Request card, booking card, user card
Filled ButtonAksi utama: Login, Kirim, Accept
Outlined ButtonAksi sekunder: Batal, Reject
FAB (Extended)Tombol buat request baru
DialogKonfirmasi aksi penting
Bottom SheetFilter, detail cepat
ChipTag mata pelajaran, status
BadgeJumlah notifikasi belum dibaca
Linear ProgressLoading indikator
Skeleton LoaderPlaceholder saat data loading

Bottom Navigation Bar
├── 🏠 Home (Dashboard)
├── 📝 Request (Buat & Lihat Request)
├── 💬 Chat (Daftar Percakapan)
└── 👤 Profile (Profil & Pengaturan)

Responsif & Adaptif

DeviceLebar LayarLayout
Phone< 600dpSingle column, bottom nav
Tablet600–1024dpTwo columns, rail nav
Desktop> 1024dpThree columns, drawer nav

Aksesibilitas

  • Kontras warna minimum 4.5:1 (WCAG 2.1 AA)
  • Ukuran tap target minimum 48x48dp
  • Screen reader support via Semantics widget Flutter
  • Font scaling mendukung sistem accessibility Android/iOS

Halaman Utama

HalamanKomponen Utama
LoginLogo, TextField, Filled Button
Dashboard SiswaGreeting card, Quick actions, Jadwal, Leaderboard mini
Request BantuanForm stepper, Dropdown, DateTimePicker
Booking ListCard list, Status chip, Filter
Meeting ScreenTimer, QR Scanner, Check-In/Out button
ChatBubble chat, Input field, Attach button
LeaderboardRank list, Avatar, SIS Score badge
ProfileAvatar, Level bar, Badge grid, History

Flutter Theme Configuration

// app/theme/app_theme.dart

ThemeData get lightTheme => ThemeData(
useMaterial3: true,
colorScheme: ColorScheme.fromSeed(
seedColor: const Color(0xFF2563EB), // Primary Blue
brightness: Brightness.light,
),
textTheme: GoogleFonts.poppinsTextTheme(),
cardTheme: const CardThemeData(
elevation: 1,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(16)),
),
),
filledButtonTheme: FilledButtonThemeData(
style: FilledButton.styleFrom(
minimumSize: const Size(double.infinity, 52),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
),
),
);