Flutter'da "MediaQuery.of() called with a context that does not contain a MediaQuery." hatası nasıl çözülür?

07.08.2020 18:24
#FLUTTER #HATA #MEDİAQUERY

Flutter'da "MediaQuery.of() called with a context that does not contain a MediaQuery." hatası nasıl çözülür?

Flutter üzerinde MediaQuery kullanmak istediğimiz zaman oluşan "MediaQuery.of() called with a context that does not contain a MediaQuery." hatasının çözümü, birçok denemeden sonra gördüğüm kadarı ile şu şekilde olacaktır.

MediaQuery kullanacağımız widget direkt olarak ana sınıf içerisinde olmayacak. Bunun yerine scaffold veya body kısmı farklı bir sınıftan çağrılacak. Örnek vermem gerekirse;

////////////////////////////   HATALI KULLANIM /////////////////////////
void main() {
runApp(
runApp(App2());
}
class App2 extends StatelessWidget {

@override
Widget build(BuildContext context) {

return MaterialApp(
theme:
theme: ThemeData(),
home: Scaffold(
body: Container(
color: Colors.pink,
width: MediaQuery.of(context).size.width / 2,
height: MediaQuery.of(context).size.height,
),
color: Colors.pink,
width: MediaQuery.of(context).size.width / 2,
height: MediaQuery.of(context).size.height,
),
),
);
}
}
}
////////////////////////////   DOĞRU KULLANIM /////////////////////////
void main() {
runApp(
runApp(App2());
}
class App2 extends StatelessWidget {

@override
Widget build(BuildContext context) {

return MaterialApp(
theme:
theme: ThemeData(),
home: Scaffold(
body: Home(),
),
);
}
}

class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
color: Colors.pink,
width: MediaQuery.of(context).size.width / 2,
height: MediaQuery.of(context).size.height,
);
}
}

Yukarıda kırmızı alanla belirtlien kısım, aşağıdaki gibi yeşil alana ayrıldığı zaman MediaQuery sorunsuz bir şekilde kullanılabilecektir. Ve "MediaQuery.of() called with a context that does not contain a MediaQuery." hatası çözülmüş olacaktır.