DEV Community

Cover image for Flutter "Farkları Ne? 😕" Serisi
Gülsen Keskin
Gülsen Keskin

Posted on

Flutter "Farkları Ne? 😕" Serisi

Merhaba! Flutter 'da benzer görünen işlevlerin farklarını merak ediyor musunuz? Sizin de aklınıza takılan "İkisi de aynı değil mi? Ne farkları var ki?" diye düşündüren konuları dev'de yorum yapın birlikte araştırıp öğrenelim ne dersiniz? 😀

Bölüm 1 😀

Navigator.pop(context); ve Navigator.of(context).pop(); arasındaki fark nedir?

Her iki yöntemde mevcut rotayı yığından çıkararak bir önceki rotayı gösterir. İki method arasındaki fark of() static methodu ve rootNavigator parametresidir. Of() static methodu verilen context'i kapsayan bu sınıfın en yakın örneğinin(instance) durumunu verir.

Navigator.of(context) methodunun Navigator widget'ına doğrudan bir referansı yoktur ve rotalar üzerinde işlem yapabilmek için verilen BuildContext'in en yakın atası olan Navigator'ı kullanır. Ayrıca varsayılan olarak false değerine sahip bir rootNavigator paremetresi alır. Eğer bu parametre true olarak ayarlanırsa bunun yerine en uzaktaki NavigatorState verilir.

Navigator.pop(context) yöntemi ise, çağrıldığı yerde geçerli olan BuildContext nesnesini kullanarak Navigator sınıfının bir örneğini elde eder ve bu örneği kullanarak yönlendirme işlemlerini gerçekleştirir.

Navigator.

Navigator.pop(context, result)
Enter fullscreen mode Exit fullscreen mode

Navigator.of

Navigator.of(context, rootNavigator: false).pop(result)
Enter fullscreen mode Exit fullscreen mode

Kaynaklar:
https://api.flutter.dev/flutter/widgets/Navigator/of.html
https://api.flutter.dev/flutter/widgets/Navigator-class.html
https://stackoverflow.com/a/71616934/14745090
https://api.flutter.dev/flutter/widgets/Navigator/pop.html
https://stackoverflow.com/a/57457578/14745090

Top comments (2)

Collapse
 
mehmetyaz profile image
Mehmet Yaz

Selamlar. Öncelikle başladığın bu seri için teşekkürler. Faydalı bir iş olacağı kesin. Fakat düzeltme ihtiyacı hissettiğim bir şey var.
DM kapalı olduğu için burdan belirtiyorum ki:

Bu bilgi yanıltıcı ve kafa karıştırıcı olabilir. Zira "(1) Navigator.of(context).someMethod()" ile "(2) Navigator.someMethod(context)" arasında hiçbir işlevsel fark yok. Biri instance method, diğeri static method. Birinde instance a ulaşmak için of(BuildContext) metodunu kullanıyoruz, diğerinde static method aynı "of" metodunu kullanarak instance a ulaşıp gerekli metodu çağırıyor.

Instance a ulaşmak için context i kullanıyoruz ve 1. Örnekte of ile Navigator instance'ına ulaşırken ikincide o static metod ulaştığı için BuildContext i ona veriyoruz.
Dilersen kaynak kodlarına bakabilirsin.

Collapse
 
gulsenkeskin profile image
Gülsen Keskin

Cevabınız için çok teşekkür ederim. Biraz daha araştırıp güncelleyeceğim 😀