Skip to content

Panduan Development

text
# Related Code
- `pubspec.yaml`
- `analysis_options.yaml`
- `test/`

Workflow Lokal

bash
# Install dependencies
flutter pub get

# Jalankan di emulator/device
flutter run

# Jalankan web
flutter run -d chrome

# Build untuk production
flutter build apk          # Android
flutter build ios           # iOS
flutter build web           # Web
flutter build windows       # Windows

Running Tests

bash
# Semua test
flutter test

# Test spesifik
flutter test test/models/message_test.dart
flutter test test/providers/chat_provider_test.dart

# Coverage
flutter test --coverage
genhtml coverage/lcov.info -o coverage/html

Test Strategy

LevelToolsCakupan
Unit Testflutter_test + ProviderContainerModels, providers logic
Widget Testflutter_test + WidgetTesterSetiap widget rendering & interaksi
IntegrationBelum adaPerlu ditambahkan

Semua provider di-test menggunakan ProviderContainer langsung tanpa perlu WidgetTester, membuat unit test state management menjadi cepat dan terisolasi. Widget test menggunakan helper _wrap() yang menyediakan ProviderScope + FTheme + MaterialApp.

Debugging Tips

  • Gunakan ref.listen() (seperti di ChatScreen) untuk reaktivitas terhadap perubahan state tanpa rebuild widget
  • Riverpod ProviderContainer sangat berguna untuk test state tanpa overhead widget tree
  • Forui context.theme memberikan akses ke FColors untuk kustomisasi warna sesuai tema

Melacak Request End-to-End

Untuk memahami alur kirim pesan:

  1. User menekan send di MessageInputlib/widgets/message_input.dart:10628
  2. ChatNotifier.sendMessage() dipanggil → lib/providers/chat_provider.dart:10318
  3. State berubah, ChatScreen mendeteksi via ref.listen()lib/screens/chat_screen.dart:10437
  4. ListView.builder me-render ulang dengan pesan baru
  5. Auto-scroll ke bawah jika user sedang di bagian bawah