ios - 尝试在 Flutter 中设置背景图像时出现 MediaQuery.of() 错误

标签 ios dart flutter

这是我用于设置应用背景图片的代码。

import 'package:flutter/material.dart';

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

class Calculator extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: new Container(
        decoration: new BoxDecoration(
          image: new DecorationImage(
            image: new AssetImage("assets/Background_1.jpg"),
            fit: BoxFit.cover,
          ),
        ),
        child: null,
      ),
    );
  }
}

这是我在尝试运行代码时遇到的错误!

> I/flutter (10809): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY    
> ╞═══════════════════════════════════════════════════════════ I/flutter
> (10809): The following assertion was thrown building     Calculator:
> I/flutter (10809): MediaQuery.of() called with a context that does not
> contain a MediaQuery. I/flutter (10809): No MediaQuery ancestor could
> be found starting from the context that was passed to MediaQuery.of().
> I/flutter (10809): This can happen because you do not have a
> WidgetsApp or MaterialApp widget (those widgets introduce I/flutter
> (10809): a MediaQuery), or it can happen if the context you use comes
> from a widget above those widgets. I/flutter (10809): The context used
> was: I/flutter (10809):   Scaffold(dirty, state:
> ScaffoldState#0495a(lifecycle state: initialized, tickers: tracking 1
> I/flutter (10809):   ticker)) I/flutter (10809):  I/flutter (10809):
> When the exception was thrown, this was the stack: I/flutter (10809):
> #0      MediaQuery.of (package:flutter/src/widgets/media_query.dart:481:5) I/flutter
> (10809): #1      ScaffoldState.didChangeDependencies
> (package:flutter/src/material/scaffold.dart:1449:50) I/flutter
> (10809): #2      StatefulElement._firstBuild
> (package:flutter/src/widgets/framework.dart:3846:12) I/flutter
> (10809): #3      ComponentElement.mount
> (package:flutter/src/widgets/framework.dart:3696:5) I/flutter (10809):
> #4      Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) I/flutter
> (10809): #5      Element.updateChild
> (package:flutter/src/widgets/framework.dart:2753:12) I/flutter
> (10809): #6      ComponentElement.performRebuild
> (package:flutter/src/widgets/framework.dart:3732:16) I/flutter
> (10809): #7      Element.rebuild
> (package:flutter/src/widgets/framework.dart:3547:5) I/flutter (10809):
> #8      ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3701:5) I/flutter (10809):
> #9      ComponentElement.mount (package:flutter/src/widgets/framework.dart:3696:5) I/flutter (10809):
> #10     Element.inflateWidget (package:flutter/src/widgets/framework.dart:2950:14) I/flutter
> (10809): #11     Element.updateChild
> (package:flutter/src/widgets/framework.dart:2753:12) I/flutter
> (10809): #12     RenderObjectToWidgetElement._rebuild
> (package:flutter/src/widgets/binding.dart:909:16) I/flutter (10809):
> #13     RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:880:5) I/flutter (10809):
> #14     RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure> (package:flutter/src/widgets/binding.dart:826:17) I/flutter
> (10809): #15     BuildOwner.buildScope
> (package:flutter/src/widgets/framework.dart:2266:19) I/flutter
> (10809): #16     RenderObjectToWidgetAdapter.attachToRenderTree
> (package:flutter/src/widgets/binding.dart:825:13) I/flutter (10809):
> #17     _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.attachRootWidget
> (package:flutter/src/widgets/binding.dart:712:7) I/flutter (10809):
> #18     runApp (package:flutter/src/widgets/binding.dart:756:7) I/flutter (10809): #19     main (package:calculator/main.dart:3:16)
> I/flutter (10809): #20     _startIsolate.<anonymous closure>
> (dart:isolate/runtime/libisolate_patch.dart:289:19) I/flutter (10809):
> #21     _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:171:12) I/flutter (10809):
> ════════════════════════════════════════════════════════════════════════════════════════════════════

在 pubspec.yaml 文件中,我还使用适当的缩进指定了 Assets ,但没有任何帮助!

最佳答案

您需要将您的Scaffold 包裹在WidgetsApp 中小部件,例如创建自己的 MediaQueryMaterialApp:

class Calculator extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: new Scaffold(
        body: new Container(
          decoration: new BoxDecoration(
            image: new DecorationImage(
              image: new AssetImage("assets/Background_1.jpg"),
              fit: BoxFit.cover,
            ),
          ),
          child: null,
        ),
      ),
    );
  }
}

关于ios - 尝试在 Flutter 中设置背景图像时出现 MediaQuery.of() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54112431/

相关文章:

ios - 有没有办法查询 HTML5 应用程序缓存?

flutter - 使用 BlocListener 显示对话框

flutter - 如何在 Appbar 上制作不同对齐方式的一些图标?

ios - 找不到框架 Pods_OneSignalNotificationServiceExtension

objective-c - 将工作委托(delegate)给两个不同的委托(delegate),这可能吗?

ios - 倒数计时器不会在00:00:00:00:00停止

mysql - 如何将图像从 Drupal 字段加载到 UIImageView?

http - 加载时间长,并且显示_InternalLinkedHashMap和列表<Dynamic>错误

Flutter 从 List 中获取离现在最近的时间戳

ios - 在 iPhone Flutter 上启动应用程序时出错