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)
Navigator.of
Navigator.of(context, rootNavigator: false).pop(result)
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)
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.
Cevabınız için çok teşekkür ederim. Biraz daha araştırıp güncelleyeceğim 😀