Flutter "Farklar Ne? " Serisi
Merhaba! Flutter 'da benzer grnen ilevlerin farklarn irdelemeye ynelik bir seri oluturmaya karar verdim. Sizin de aklnza taklan "Bunlar ayn deil mi? Ne farklar var ki?" diye dndren konular yorum yapn birlikte aratrp renelim :D
Blm 1
Navigator.pop(context);
ve Navigator.of(context).pop();
arasndaki fark nedir?
Her iki yntemde mevcut rotay yndan kararak bir nceki rotay gsterir ancak:
Navigator.of(context) methodunun Navigator widget'na dorudan bir referans yoktur ve rotalar zerinde ilem yapabilmek iin verilen BuildContext'in en yakn atas olan Navigator' kullanr. Bu, zellikle i ie rotalarla alrken veya Navigator widget aacnda birka seviye yukardayken yararl olabilir.
Navigator.pop(context) yntemi ise, arld yerde geerli olan BuildContext
nesnesini kullanarak Navigator snfnn bir rneini elde eder ve bu rnei kullanarak ynlendirme ilemlerini gerekletirir.
Navigator widget'na dorudan referansnz olmadnda (Bu Navigator i ie rotalarla alyorsanz ve Navigator'a dorudan eriilemiyorsa olabilir.) Bu durumlarda, verilen BuildContext'in en yakn atas olan Navigator' elde etmek iin Navigator.of(context) yntemini kullanabilirsiniz.
Bu rnekte, MyWidget widget'nn Navigator widget'na dorudan bir referans yoktur. Navigator, MaterialApp widget'nn iinde, widget aacnn birka seviye yukarsndadr. Navigator.of(context) methodu sayesinde verilen BuildContext'in en yakn 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 dorudan bir referansnz yoktur }, child: const Text('Go to another screen'), ), ), ); }}
Kaynaklar:
https://api.flutter.dev/flutter/widgets/Navigator-class.html
https://stackoverflow.com/a/71616934/14745090
Original Link: https://dev.to/gulsenkeskin/flutter-farki-ne-serisi-5fd7
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To