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 # WindowsRunning 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/htmlTest Strategy
| Level | Tools | Cakupan |
|---|---|---|
| Unit Test | flutter_test + ProviderContainer | Models, providers logic |
| Widget Test | flutter_test + WidgetTester | Setiap widget rendering & interaksi |
| Integration | Belum ada | Perlu 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
ProviderContainersangat berguna untuk test state tanpa overhead widget tree - Forui
context.themememberikan akses keFColorsuntuk kustomisasi warna sesuai tema
Melacak Request End-to-End
Untuk memahami alur kirim pesan:
- User menekan send di
MessageInput→lib/widgets/message_input.dart:10628 ChatNotifier.sendMessage()dipanggil →lib/providers/chat_provider.dart:10318- State berubah,
ChatScreenmendeteksi viaref.listen()→lib/screens/chat_screen.dart:10437 ListView.builderme-render ulang dengan pesan baru- Auto-scroll ke bawah jika user sedang di bagian bawah