即使没有在应用程序中使用MediaQuery,在没有显示MediaQuery错误的上下文中调用MediaQuery.of()

时间:2019-05-13 03:17:33

标签: flutter

我是Flutter的初学者,我正在尝试使用带有标题显示文本“ Hi there”的AppBar制作一个简单的应用程序

通过Android Studio执行代码时,我总是会收到错误消息

MediaQuery.of() called with a context that does not contain a MediaQuery.

即使我不调用MediaQuery.of(),为什么也会调用此错误?我该如何解决这个问题

我首先认为这是Flutter或Android Studio的问题。我用扑医生,一切都很好。确切的代码如下所示:

[√] Flutter (Channel stable, v1.2.1, on Microsoft Windows [Version 10.0.17134.706], locale
    en-US)
[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[√] Android Studio (version 3.4)
[√] VS Code (version 1.33.1)
[√] Connected device (1 available)

• No issues found!

我意识到Flutter框架本身可能不是问题。

然后我决定重新启动Android Studio,因为它本身可以自行解决问题。不幸的是,仍然显示出令人讨厌的错误

这是我的代码。

import 'package:flutter/material.dart';

void main() => runApp(myApp());

class myApp extends StatelessWidget{
  Widget build(BuildContext context){
    return Scaffold(
      appBar: AppBar(
        title: Text("Hi there")
      )
    );
  }
}

我希望看到带有标题为“ Hi There”的AppBar,但我收到了错误消息。

1 个答案:

答案 0 :(得分:4)

source code可以明显看出,MediaQuery内部组件使用

Scaffold来布局其子级。因此,需要将其包装在提供MediaQuery小部件的小部件内,就像MaterialApp小部件一样,它继承自WidgetsApp

void main() => runApp(myApp());

class myApp extends StatelessWidget{
  Widget build(BuildContext context){
    return MaterialApp(
      home: Scaffold(
          appBar: AppBar(
              title: Text("Hi there")
          )
      ),
    );
  }
}