我如何解决颤振中的 MediaQuery 错误?

时间:2021-04-05 20:33:20

标签: flutter mobile

我最近在 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。

所以我想知道,应该是什么错误?

谢谢

1 个答案:

答案 0 :(得分:1)

那可能是因为 MaterialApp 尚未初始化。尝试将您的主页小部件移动到一个单独的文件(例如 home_screen.dart)并将其传递给 MaterialApp,例如:

MaterialApp(home:HomeScreen())

在主屏幕中使用 MediaQuery