MIF_E31231623/QUICK_SETUP_CARD_WISATA.md

8.4 KiB

🚀 Quick Setup Guide - Card Wisata Beranda

Status Implementasi

Tampilan card wisata beranda sudah selesai dan siap digunakan. Berikut adalah panduan cepat untuk setup dan testing.


📋 Checklist Implementasi

  • Model data dengan 8 destinasi
  • Card widget modern dengan desain elegan
  • Home page dengan search & filter
  • Grid layout 2 kolom responsive
  • Animasi smooth tap
  • Rating & category badges
  • Detail page integration
  • Warna tema sesuai spesifikasi
  • Null safety enabled

🎨 File-File Baru/Updated

1. Widget Card Baru

lib/widgets/destination_card_modern.dart (NEW)
  • Card design modern dengan rounded corner 16pt
  • Gradient overlay di gambar
  • Rating badge (sudut kanan atas)
  • Category badge (sudut kiri atas)
  • Animasi scale 0.95 saat tap
  • Responsive layout

2. Home Page Updated

lib/pages/home_page.dart (UPDATED)
  • SearchBar dengan placeholder "Cari wisata favoritmu..."
  • Filter kategori: Semua, Gunung, Danau, Pantai
  • Grid 2 kolom dengan spacing optimal
  • Result counter
  • Empty state handling
  • Real-time filtering

3. Home Page Alternative

lib/pages/home_page_new.dart (NEW)
  • Versi alternatif dengan styling sama

🏃 Quick Start

Step 1: Update pub dependencies

cd android/wisata_app
flutter pub get

Step 2: Run aplikasi

flutter run

Step 3: Test fitur

  1. Buka halaman Beranda → Lihat 8 card wisata
  2. Search → Cari "Semeru" atau "Pantai"
  3. Filter → Tap filter "Gunung", "Danau", "Pantai"
  4. Tap Card → Buka detail halaman
  5. Scroll → Lihat animasi smooth

📱 Tampilan yang Diharapkan

Header (SliverAppBar)

┌─────────────────────────┐
│ Jelajahi Lumajang       │ ← Title 32pt bold
│ Temukan 8 destinasi...  │ ← Subtitle 14pt
│ [Gradient background]   │
└─────────────────────────┘
┌─────────────────────────┐
│ 🔍 Cari wisata favori.. │ ← Rounded 14pt
└─────────────────────────┘

Filter Buttons

[Semua] [Gunung] [Danau] [Pantai]

Card Grid (2 kolom)

┌─────────────┬─────────────┐
│   Card 1    │   Card 2    │
├─────────────┼─────────────┤
│   Card 3    │   Card 4    │
├─────────────┼─────────────┤
│   Card 5    │   Card 6    │
├─────────────┼─────────────┤
│   Card 7    │   Card 8    │
└─────────────┴─────────────┘

Card Detail

┌─────────────────────────────┐
│ [Image with gradient] ⭐4.8 │ ← Rating badge
│ 🏔️ [Category]               │ ← Category badge
├─────────────────────────────┤
│ Gunung Semeru               │ ← Nama wisata
│ Gunung tertinggi di Jawa... │ ← Deskripsi
│ 📍 Ranu Pani, Lumajang     │ ← Lokasi
└─────────────────────────────┘

🔍 Fitur Testing

Test Scenario 1: Display All Cards

1. Buka app → Beranda tab
2. Expected: 8 card wisata ditampilkan
3. Verify: Grid 2 kolom, spacing konsisten

Test Scenario 2: Search Functionality

1. Tap search bar
2. Type: "Semeru"
3. Expected: Hanya card "Gunung Semeru" ditampilkan
4. Tap X clear button
5. Expected: Kembali ke 8 card

Test Scenario 3: Filter Kategori

1. Tap filter "Gunung"
2. Expected: 3 card ditampilkan (Lemongan, Semeru, B29)
3. Tap filter "Danau"
4. Expected: 3 card ditampilkan (Kumbolo, Pani, Regulo)
5. Tap filter "Pantai"
6. Expected: 2 card ditampilkan (Watu Godeg, Watu Pecak)

Test Scenario 4: Card Tap Animation

1. Tap pada card
2. Expected: Card shrink 5% dengan smooth animation
3. Expected: Navigasi ke detail page

Test Scenario 5: Detail Page

1. Tap card dari beranda
2. Expected: Detail page membuka
3. Verify: Hero image, rating, kategori, lokasi
4. Verify: Deskripsi lengkap
5. Verify: Model path ditampilkan
6. Tap "Lihat Model 3D" button
7. Expected: Navigasi ke AR viewer

🎨 Warna Tema Reference

Hijau Alam (Primary)

  • Light: #2FA86B
  • Main: #1F8F5F
  • Dark: #0D6A45

Coklat Earthy (Mountain)

  • #8B6F47

Biru Danau (Lake)

  • #4A90E2

Orange (Beach)

  • #E28D42

Neutral

  • Background: #F7F4EA
  • Surface: #FFFFFF
  • Text: #2C3E50

📊 Data Structure

Destination Model

class Destination {
  final int id;
  final String nama;
  final String deskripsi;
  final String lokasi;
  final double rating;
  final String kategori;        // 'gunung', 'danau', 'pantai'
  final String gambar;          // assets/images/...
  final String modelPath;       // assets/models/...glb
  final String deskripsiLengkap;
}

Sample Data

destinationList = [
  Destination(
    id: 1,
    nama: 'Gunung Lemongan',
    deskripsi: 'Gunung yang indah dengan pemandangan alam...',
    lokasi: 'Pronojiwo, Lumajang',
    rating: 4.8,
    kategori: 'gunung',
    gambar: 'assets/images/gunung_lemongan.jpg',
    modelPath: 'assets/models/gunung_lemongan.glb',
    deskripsiLengkap: '...',
  ),
  // ... 7 destinasi lainnya
];

🔧 Troubleshooting

Issue: Card hanya menampilkan 5 wisata

Solution: Refresh/rebuild app

flutter clean
flutter pub get
flutter run

Issue: Gambar tidak muncul di card

Solusi: Pastikan file gambar ada di assets/images/

# Cek pubspec.yaml
flutter:
  assets:
    - assets/images/
    - assets/models/

Issue: Animasi card terasa lag

Solusi: Pastikan device memiliki cukup memory

  • Clear device cache: flutter clean
  • Rebuild: flutter run --release

Issue: Filter tidak bekerja

Solusi: Pastikan kategori spelling benar (lowercase)

kategori: 'gunung'  // ✅ Benar
kategori: 'Gunung'  // ❌ Salah

📚 Import Statements

Pastikan import ini ada di home_page.dart:

import 'package:flutter/material.dart';
import '../models/destination_model.dart';
import '../models/destination_data.dart';
import '../widgets/destination_card_modern.dart';
import 'destination_detail_page.dart';

🎯 Navigation Flow

BerandaScreen
└── HomePage
    └── SearchBar + Filter
    └── SliverGrid (8 cards)
        └── onTap → DestinationDetailPage
            ├── Hero Image
            ├── Rating & Category
            ├── Full Description
            └── "Lihat Model 3D" → AR Viewer

Highlights Fitur

Desain Modern

  • Rounded corner 16pt
  • Subtle shadow (elevation 4)
  • Gradient overlay cerdas
  • Consistent spacing & typography

Interaksi Smooth

  • 🎬 Scale animation 0.95 saat tap
  • 🎬 Color transition 200ms
  • 🎬 Responsive feedback

User Experience

  • 🎯 Clear visual hierarchy
  • 🎯 Intuitive filtering
  • 🎯 Real-time search
  • 🎯 Informative badges

📱 Responsive Behavior

Portrait Mode (Mobile)

  • Grid: 2 kolom
  • Card height: Optimal untuk thumb
  • Spacing: 14pt cross, 18pt main

Landscape Mode

  • Dapat disesuaikan ke 3-4 kolom
  • Margin bottom untuk navigation bar

Tablet

  • Dapat ditingkatkan ke 3+ kolom
  • Larger card dengan lebih banyak info

🚀 Deployment Checklist

Sebelum publish ke Play Store:

  • Test semua 8 destinasi load dengan benar
  • Test search dengan berbagai query
  • Test filter semua kategori
  • Test detail page loading
  • Test AR model loading
  • Test on minimal Android SDK version
  • Test on various device sizes
  • Verify text bahasa Indonesia lengkap
  • Check color contrast accessibility
  • Remove debug prints

📞 Support

Jika ada issue atau pertanyaan:

  1. Check DOKUMENTASI_CARD_WISATA.md untuk detail lengkap
  2. Review code di lib/widgets/destination_card_modern.dart
  3. Check lib/pages/home_page.dart untuk logic
  4. Verify data di lib/models/destination_data.dart

Status: Production Ready
Last Updated: 2026-05-16
Version: 1.0
Tested: Android Mobile Portrait