首页 > 解决方案 > 使用不显示 MediaQuery 错误的上下文调用 MediaQuery.of(),即使应用程序中未使用 MediaQuery

问题描述

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

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

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

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

我首先认为这是颤振或 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,但我收到了一个错误。

标签: flutter

解决方案


MediaQueryScaffold源代码中可以看出,内部组件使用它来布局其子级。因此,它需要被包装在一个小部件中,该小部件将提供一个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")
          )
      ),
    );
  }
}

推荐阅读