Flutter: Clean Arxitektura
Flutter layihəsini qatlara bölmək: domain, data və presentation. Nümunələr Riverpod 3, freezed və sealed Result üzərindədir; prinsiplər Flutter komandasının rəsmi arxitektura bələdçisindən götürülüb. Sonda praktik feature qurmaq və mövcud ekranı miqrasiya etmək.
Mərhələlər
Təməllər: qatlar və asılılıq qaydası
Arxitektura qovluq adları deyil — kodun hansı hissəsinin kiminlə danışa biləcəyi barədə qaydalar toplusudur. Bu mərhələdə asılılıq qaydasını, Flutter-in rəsmi iki qatını və qovluq strukturunun üç variantını öyrənirsən.
Domain qatı: modellər, müqavilələr, use-case-lər
Tətbiqin öz lüğəti: domain modelləri, onların immutability-si, repository müqavilələri və use-case-lərin nə vaxt lazım olduğu. Bu qat təmiz Dart-dır — Flutter, HTTP və baza haqqında heç nə bilmir.
🔓 Tövsiyə: əvvəlcə: Təməllər: qatlar və asılılıq qaydası
Data qatı: service, repository, cache
Məlumatın tətbiqə necə gəldiyi: service-lər xarici dünya ilə danışır, repository həqiqətin mənbəyi olur, cache və offline qərarları bir yerdə verilir. Bütün "çirkli" detallar bu qatda qalır.
🔓 Tövsiyə: əvvəlcə: Domain qatı: modellər, müqavilələr, use-case-lər
Xəta axını: Result, Failure və UI
Xəta qatlar arasında necə hərəkət edir: exception nə vaxt tutulur, Result niyə lazımdır, Failure hierarxiyası necə qurulur və istifadəçi nəyi görür. Bu mərhələ Dart-ın sealed sinifləri və tam switch-i üzərində qurulub.
🔓 Tövsiyə: əvvəlcə: Data qatı: service, repository, cache
Presentation qatı və dependency injection
Domain və data hazırdır — indi ekran. UI state-i necə modelləşdirilir, notifier niyə view model-dir, xəta və yan effektlər harada idarə olunur, widget-də hansı məntiq qala bilər və asılılıqlar necə bağlanır.
🔓 Tövsiyə: əvvəlcə: Xəta axını: Result, Failure və UI
Praktika: test, feature qurmaq, miqrasiya
Nəzəriyyə bitdi. Bu mərhələdə hər qatın testini yazırsan, bir feature-i sıfırdan başdan-sona qurursan, mövcud qarışıq ekranı qatlara köçürürsən və nə vaxt dayanmaq lazım olduğunu öyrənirsən.
🔓 Tövsiyə: əvvəlcə: Presentation qatı və dependency injection
📚 Mənbələr və sənədlər
- Flutter arxitektura bələdçisirəsmidocs.flutter.dev
Bu branch-ın əsas mənbəyi: qatlar, onların bir-biri ilə əlaqəsi və opsional domain qatı.
- Arxitektura tövsiyələrirəsmidocs.flutter.dev
Hər tövsiyənin yanında onun çəkisi yazılıb: "strongly recommend", "recommend", "conditional". Qərar verərkən buna baxın.
- Case study: Compass tətbiqirəsmidocs.flutter.dev
Prinsiplərin real kod bazasında görünüşü — qovluq strukturu, DI və hər qatın testi ayrı-ayrı səhifələrdə.