FutureBuilder, StreamBuilder və alternativləri
FutureBuilder və StreamBuilder async datanı birbaşa widget ağacında göstərmək üçündür: snapshot obyekti vəziyyəti daşıyır (connectionState, hasData, hasError).
Onların ən böyük tələsi budur: build metodunun içində future yaratsan, hər rebuild-də yeni sorğu göndərilir.
``` // yox: hər rebuild yeni sorğu FutureBuilder(future: api.load(), ...)
// bəli: future bir dəfə yaradılır late final _future = api.load(); FutureBuilder(future: _future, ...) ```
Bu səhv çox vaxt gec aşkarlanır, çünki ekran işləyir — sadəcə arxada onlarla sorğu gedir.
| Vasitə | Uyğun olduğu hal | Zəifliyi |
|---|---|---|
| `FutureBuilder` | Bir dəfəlik yükləmə, sadə ekran | Future-un yenidən yaradılması tələsi; retry əlverişsizdir |
| `StreamBuilder` | Davamlı axın: real-vaxt data, bildirişlər | Subscription ömrünə diqqət lazımdır |
| State management (Riverpod/Bloc) | Retry, cache, paylaşılan vəziyyət | Əlavə qat və qurulma xərci |
Interview ipucu. "FutureBuilder nə vaxt istifadə edirsən?" sualının güclü cavabı sərhədi göstərir: sadə, bir dəfəlik yükləmə üçün — bəli; retry, cache, paylaşılan vəziyyət və ya bir neçə ekrandan istifadə lazımdırsa — state management. Tələni də mütləq qeyd et: future build içində yaradılırsa, hər rebuild yeni sorğudur. Bu detalı deyən namizəd real təcrübəni göstərir.
📚 Mənbələr və sənədlər
- FutureBuilder classrəsmiapi.flutter.dev
Sənəd future-un `build`-də yaradılmasının niyə səhv olduğunu açıq izah edir.
- StreamBuilder classrəsmiapi.flutter.dev
- Şəbəkə ilə işrəsmidocs.flutter.dev