Flutter'da "Navigator operation requested with a context that does not include a Navigator." Hatası

21.09.2020 18:13

Flutter'da "Navigator operation requested with a context that does not include a Navigator." Hatası

Flutter üzerinde sayfalar arası yönlendirme yapmak istediniz fakat böyle bir hata ile karşılaştınız. Bu hatada anlatılmak istenen anladığım kadarı ile gönderilen contextin Navigator içermemesi.

Çözüm temel olarak şu şekilde. Navigator kullanacağımız class, ilk çağrılan widget olmamalı.

Bu sorunu çözmek için kullanılacak birden çok yöntem bulunuyor. Temel olarak işlevi aynı olmasına rağmen kullanım yeri fark ediyor. Kullanımı size kalmış olan bu yöntemleri şu şekilde sıralayabilirim.

1. Main içerisindeki runApp'ta çağırdığımız class'ı MaterialApp ile sarmalıyoruz.

void main() {
runApp(MaterialApp(home: test1()));
}

2. runApp içerisinde direkt olarak ilgili class çağrılır. Daha sonra uygulama işlevlerinin yapılacağı class ayrı bir class olarak çağrılır.

void main() {
setupLocator();
runApp(test1());
}

class test1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: test3(),
);
}
}

class test3 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: RaisedButton(
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => test2(),
),
);
},
child: Text("Tıkla"),
),
),
);
}
}


class test2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: Text("SAYFA 2"),
),
),
);
}
}