myniqx.dev
NavixReactTV UIFocus ManagementInterview

Remote-Driven Arayüzlerin Sessiz Motoru: Navix

myniqx_admin
myniqx_admin
LEAD DEVELOPER
Claude
Claude
AI ASSISTANT
published
5 Haziran 2026
Remote-Driven Arayüzlerin Sessiz Motoru: Navix
©Remote-Driven Arayüzlerin Sessiz Motoru: Navix
exfiltrate

Bu raportajda sorular bana, cevaplar Claude'a ait. Claude projeyi herhangi bir dokümantasyon okumadan, yalnızca kaynak kodu inceleyerek yanıtladı. Ortaya çıkan bilgiyi birlikte şekillendirdik.


03 //Bir geliştirici Navix'i neden tercih etsin?

TV benzeri arayüzlerde ilk akla gelen çözüm genellikle şudur: onKeyDown yakala, focused state'i kendine göre yönet. Bu yaklaşım küçük ekranlarda tutunur, ama birden fazla iç içe navigasyon bölgesi olduğu anda dağılır. Hangi bileşen odakta? Bir liste içinde başka bir liste varsa tuş olayı kime gitmeli? Bir modal açıldığında alttaki her şeyin odağa kapalı olduğundan nasıl emin olunur? Ekrandan bir bileşen kaldırıldığında odak nereye geçmeli? Bunları her bileşende ayrı ayrı çözmek; hem tekrar eden kod hem de birbirini kıran edge case'ler demektir.

Navix odak yönetimini ağaç yapısına bağlar. Her bileşen sadece kendi içinde ne yapacağını bilir; geri kalanını ağaç çözer. Bunun pratik karşılıkları şunlardır:

  • Focus trap otomatik çalışır. Bir dropdown veya video oynatıcı paneli açıldığında ağaçtaki başka hiçbir düğüm odak alamaz. Bunu elle implement etmek yerine kütüphane davranış olarak sunar.
  • Bileşen kaldırıldığında odak kaybolmaz. Ağaç, en yakın geçerli kardeşe ya da parent'a otomatik geçer.
  • Klavye girdisi soyutlanmıştır. Samsung, LG, Apple TV remote keyCode'ları... hepsi InputManager'da ortak isimlere dönüşür. Uygulama kodunun platformdan haberi olmaz.
  • Hazır bileşenler: yatay/dikey liste, sayfalanmış grid, expandable, dropdown, stepper, scroll, video oynatıcı için MultiLayer.
  • React ve Flutter'da aynı model. İki platforma birden hedef alan ekiplerde temel kavramlar aktarılabilir.

04 //Mevcut çözümler varken neden Navix'i yazdın?

Flutter'ın kendi built-in çözümü vardı. Ancak bu çözüm özünde tab ile bir sonraki elemana atlama mantığına dayanıyordu; odağın nereye gideceği her zaman öngörülebilir değildi ve istenmeyen zıplamalar kaçınılmaz oluyordu. Daha hassas bir policy tanımlamak mümkündü, ama bunun bedeli her bileşen için ayrı ayrı yazılmış onlarca satır konfigürasyondu.

Navix'in hiyerarşik yapısında ise yön, yapıdan doğrudan okunur. Kumandadan right tuşuna basıldığında odağın nereye gideceği, ağaçtaki yerleşimden zaten bellidir. Dekoratif ögeler odak dışında tutulur, PaginatedList gibi bileşenler yüzlerce item arasında gezinmeyi herhangi bir ekstra kod gerektirmeden yönetir.

</> ile yapıldı · myniqx.dev · 2026