Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Flutter: No MediaQuery widget ancestor found

import 'package:flutter/material.dart';

void main() {
  runApp(Calculator());
}

class Calculator extends StatelessWidget {
  final numpad_background_color = Color(0x212121);
  final background_color = Colors.black;
  final equal_button_background_color = Color(0xffbe00);

  final textColor = Colors.white;
  final operatorTextColor = Color(0xf3ba0e);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
            appBar: appbar(context),
            body: Stack(
              children: [Container(height: MediaQuery.of(context).size.height * 0.37), numpad(context)],
            )));
  }

  Widget appbar(BuildContext context) {
    return AppBar(title: Text("Rechner", style: TextStyle(color: textColor, fontSize: 15)), backgroundColor: background_color, leading: Icon(Icons.history));
  }

  Widget numpad(BuildContext context) {
    return Container(decoration: BoxDecoration(borderRadius: BorderRadius.circular(5), color: numpad_background_color), child:
      Column(children: [

      ],),);
  }
}

Error: No MediaQuery ancestor could be found starting from the context that was passed to MediaQuery.of(). This can happen because you have not added a WidgetsApp, CupertinoApp, or MaterialApp widget (those widgets introduce a MediaQuery), or it can happen if the context you use comes from a widget above those widgets.

I don't understand the error, I created a MaterialApp Widget and call MediaQuery from there, why does this error appear?

like image 388
Simon2215 Avatar asked Dec 21 '20 20:12

Simon2215


People also ask

How do you solve no mediaquery widget ancestor in flutter?

Wrap your classname with MaterialApp and your issue is solved. Ex. here my classname is sahim and that's how i solved this issue.

What is material app flutter?

MaterialApp Class: MaterialApp is a predefined class in a flutter. It is likely the main or core component of flutter. We can access all the other components and widgets provided by Flutter SDK.


1 Answers

Try creating another widget like this

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

Then your main method will looks like this

void main() {
  runApp(MyApp());
}
like image 188
dm_tr Avatar answered Sep 22 '22 05:09

dm_tr