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: [
],),);
}
}
Ошибка: не удалось найти предка MediaQuery, начиная с контекста который был передан в MediaQuery.of(). Это может произойти, потому что у вас есть не добавлены виджеты WidgetsApp, CupertinoApp или MaterialApp (те, виджеты вводят MediaQuery), или это может произойти, если контекст, который вы использование происходит от виджета над этими виджетами.
Я не понимаю ошибку, я создал виджет MaterialApp и вызываю оттуда MediaQuery, почему появляется эта ошибка?
Попробуйте создать еще один такой виджет
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Calculator(),
);
}
}
Тогда ваш основной метод будет выглядеть так
void main() {
runApp(MyApp());
}
Извините, теперь все работает, это была моя ошибка. Ты мой герой, спасибо тебе большое! Я удалил виджет MaterialApp из калькулятора и заменил его эшафотом :)
Я сделаю это, но мне нужно подождать еще три минуты...
Просто сделайте это, как показано ниже. Я решил это таким образом
void main() {
runApp(MaterialApp(home: Calculator()));
}
Оберните свое имя класса в MaterialApp, и ваша проблема будет решена. Бывший. здесь мое имя класса - сахим, и вот как я решил эту проблему.
void main() {
runApp(
MaterialApp(
home: sahim(),
),
);
}
Просто сделайте это, как показано ниже Это сработало для меня:
void main() {
runApp(MaterialApp(),);
}
Если предыдущие ответы, в которых использовалась эта функция с аргументами, были неэффективными или имели другие недостатки, вы должны объяснить, почему ваш ответ лучше или более общий. В противном случае это, по сути, дубликат.
Я пробовал, но это ничего не изменило. Мой код теперь такой: pastebin.com/yBw6K8gc