这是我用于设置应用背景图片的代码。
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 中小部件,例如创建自己的 MediaQuery
的 MaterialApp
:
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/