Render Etmeden Gezinmek: Navix'te Virtualization
03 //Bu bileşenlerin güçlü ve zayıf yanları nelerdir?
Güçlü yanlar
Virtualization ve odak yönetimi tek bir bileşende birleştirilmiş. Normalde bunlar ayrı katmanlardır ve aralarındaki senkronizasyon geliştiriciye bırakılır. Burada threshold mekanizması her ikisini birden yönetiyor: odak pencere sınırına yaklaştığında hem render penceresi hem viewOffset otomatik kayıyor.
groupKey mekanizması dikkat çekici bir detay. Liste ekrandan kalkıp geri döndüğünde activeIndex ve viewOffset store'dan geri yükleniyor. Kullanıcı bir kategoriden çıkıp döndüğünde liste tam kaldığı yerden devam ediyor.
NavixPaginatedGrid'deki auto-horizontal modu, az sayıda öğeyle gelen bir grid için layout kararını otomatik veriyor. Geliştiricinin bunu elle kontrol etmesi gerekmiyor.
Zayıf yanlar
Her öğe sabit boyutta olmak zorunda. slotWidth container boyutunu visibleCount'a bölerek hesaplanıyor; değişken boyutlu öğeler bu modele girmiyor.
Bileşen ilk mount'ta container boyutunu ölçemediği için containerSize sıfırdan başlıyor. Genellikle sorun çıkarmıyor ama animasyonlu mount senaryolarında fark edilebilir.
Scrollbar yapısal olarak bileşenin içine gömülmüş. Tamamen farklı bir scrollbar konumu ya da layout istendiğinde mevcut yapı buna izin vermiyor.
04 //"Bunu zaten biri yazmış olmalı" diye düşündüğün bir an oldu mu?
Evet, oldu. Ama asıl cevabı kod yazarken aldım. Geliştirme sürecinde çok detaylı bir demo hazırladık; Navix'in ne sağladığını orada somut olarak görmek, o soruyu ikinci plana itti.
Bir adım daha ileri gidip Zenith TV uygulamasını tamamen Navix üzerine inşa ettik. Zenith'in hem web app hem Tizen OS portu var, hem de Flutter ile yazılmış Android portu. Her ikisinde de benzer bir navigasyon deneyimi sağlayabildik. Navix bu süreçte uygulama ile birlikte büyüdü; ihtiyaç doğdukça özellik eklendi, sorunlar temizlendi. Hâlâ geliştirilecek alanlar var, ama şu an gerçek bir uygulamayı taşıyacak olgunluğa ulaştı.