This content originally appeared on DEV Community 👩💻👨💻 and was authored by Gülsen Keskin
Merhaba! Flutter 'da benzer görünen işlevlerin farklarını irdelemeye yönelik bir seri oluşturmaya karar verdim. Sizin de aklınıza takılan "Bunlar aynı değil mi? Ne farkları var ki?" diye düşündüren konuları yorum yapın birlikte araştırıp öğrenelim :D
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 ancak:
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. Bu, özellikle iç içe rotalarla çalışırken veya Navigator widget ağacında birkaç seviye yukarıdayken yararlı olabilir.
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 widget'ına doğrudan referansınız olmadığında (Bu Navigator iç içe rotalarla çalışıyorsanız ve Navigator'a doğrudan erişilemiyorsa olabilir.) Bu durumlarda, verilen BuildContext'in en yakın atası olan Navigator'ı elde etmek için Navigator.of(context) yöntemini kullanabilirsiniz.
Bu örnekte, MyWidget widget'ının Navigator widget'ına doğrudan bir referansı yoktur. Navigator, MaterialApp widget'ının içinde, widget ağacının birkaç seviye yukarısındadır. Navigator.of(context) methodu sayesinde verilen BuildContext'in en yakın atası Navigator'ı elde edebilirsiniz:
import 'package:flutter/material.dart';
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('My App'),
),
body: Center(
child: MyWidget(),
),
);
}
}
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('My Widget'),
),
body: Center(
child: TextButton(
onPressed: () {
// Burada navigator widget'ına doğrudan bir referansınız yoktur
},
child: const Text('Go to another screen'),
),
),
);
}
}
Kaynaklar:
https://api.flutter.dev/flutter/widgets/Navigator-class.html
https://stackoverflow.com/a/71616934/14745090
This content originally appeared on DEV Community 👩💻👨💻 and was authored by Gülsen Keskin
Gülsen Keskin | Sciencx (2022-12-24T14:05:41+00:00) Flutter “Farkları Ne? 😕” Serisi. Retrieved from https://www.scien.cx/2022/12/24/flutter-farklari-ne-%f0%9f%98%95-serisi/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.