DevTools və profiling
Flutter DevTools brauzerdə açılan alət dəstidir və performans işinin mərkəzidir:
- Widget Inspector — widget ağacı, hər widget-in aldığı constraint-lər (Layout Explorer), rebuild sayğacları
- Performance — frame-lərin vaxt xətti; hansı frame büdcəni aşıb və vaxt UI yoxsa raster thread-də gedib
- CPU Profiler — hansı funksiyanın nə qədər vaxt apardığı
- Memory — yaddaş istifadəsi və sızmaların axtarışı
- Network — gedən sorğular
Vacib şərt: performans ölçməsi profile rejimində aparılmalıdır. Debug rejimində kod optimallaşdırılmır və nəticələr real cihazdakından xeyli pisdir — debug-da ölçüb nəticə çıxarmaq klassik səhvdir.
| Simptom | Harada baxmaq | Tipik səbəb |
|---|---|---|
| Sürüşmə zamanı kəkələmə | Performance → frame timeline | Ağır `itemBuilder`, `const` olmayan elementlər |
| Ekran açılanda donma | CPU Profiler | Sinxron ağır hesablama və ya böyük JSON parse |
| Yaddaş vaxtla artır | Memory → allocations | Ləğv olunmayan subscription və ya controller |
| Widget gözlənilmədən böyükdür | Inspector → Layout Explorer | Valideyn tight constraint verib |
Interview ipucu. "Yaddaş sızmasını necə tapırsan?" sualı middle səviyyəsində gəlir. Cavab strukturu: (1) ekranı bir neçə dəfə açıb bağlayıram; (2) Memory tabında yaddaşın qayıtmadığını görürəm; (3) allocation siyahısında hansı sinifin nüsxələrinin toplandığına baxıram; (4) səbəb demək olar həmişə dispose()-da ləğv olunmamış subscription, controller və ya listener olur. Bu dördaddımlı cavab konkretdir və təcrübəni göstərir.
📚 Mənbələr və sənədlər
- Flutter DevToolsrəsmidocs.flutter.dev
- Performance viewrəsmidocs.flutter.dev
UI və raster thread ayrımı və frame büdcəsinin oxunması burada izah olunub.
- Widget Inspectorrəsmidocs.flutter.dev
- Performans praktikalarırəsmidocs.flutter.dev