【问题标题】:MediaQuery.of() called with a context that does not show a MediaQuery error shown even though MediaQuery not used in app使用不显示 MediaQuery 错误的上下文调用 MediaQuery.of(),即使应用程序中未使用 MediaQuery
【发布时间】:2019-05-13 03:17:33
【问题描述】:

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

通过 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,但我收到了一个错误。

【问题讨论】:

    标签: flutter


    【解决方案1】:

    MediaQueryScaffold 内部组件用来布局它的子元素,从它的source code 可以看出。因此,它需要封装在一个提供MediaQuery 的小部件中,就像一个继承自WidgetsAppMaterialApp 小部件:

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

    【讨论】:

      猜你喜欢
      • 2020-08-20
      • 1970-01-01
      • 1970-01-01
      • 2020-12-16
      • 2020-11-22
      • 2020-07-27
      • 2020-02-17
      相关资源
      最近更新 更多