我最近在 Flutter 中遇到了这个错误:
<块引用>MediaQuery.of() 使用不包含 MediaQuery 的上下文调用。
这是我的代码:
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
void main(){
runApp(Home());
}
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
@override
Widget build(BuildContext context) {
final size = MediaQuery.of(context).size;
return MaterialApp(
title: 'Refresh my mind',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.red,
),
home:Scaffold(
appBar: AppBar(
title: Text("Hello"),
leading: Icon(
Icons.ac_unit
),
actions: [Icon(Icons.account_balance),
Icon(Icons.airplanemode_active),
Icon(Icons.autorenew),],
elevation: 12,
),
backgroundColor: Colors.teal,
body: Container(
color: Colors.black12,
margin: EdgeInsets.all(20),
child: Center(
child: Card(
elevation: 5.0,
color: Colors.grey,
child: Container(
width: size.width/1.5,
height: 200,
),
),
),
),
),
);
}
}
我在互联网上搜索,我发现我必须使用eather MaterialApp widget OR WidgetApp,但我在我的代码中使用了MaterialApp。
所以我想知道,应该是什么错误?
谢谢
答案 0 :(得分:1)
那可能是因为 MaterialApp 尚未初始化。尝试将您的主页小部件移动到一个单独的文件(例如 home_screen.dart)并将其传递给 MaterialApp,例如:
MaterialApp(home:HomeScreen())
在主屏幕中使用 MediaQuery