Flutter 问题:从上下文开始找不到 MediaQuery 祖先

Posted

技术标签:

【中文标题】Flutter 问题:从上下文开始找不到 MediaQuery 祖先【英文标题】:Flutter Issue: No MediaQuery ancestor could be found starting from the context 【发布时间】:2021-03-03 17:54:26 【问题描述】:

正在执行热重启...正在将文件同步到设备 sdk gphone x86 arm... 在 1,910 毫秒内重新启动应用程序。

════════ 小部件库捕获的异常 ══════════════════════════════════════════════════ ═════以下 断言在构建 MyApp(状态:_MyAppState#6de06)时被抛出: MediaQuery.of() 调用的上下文不包含 媒体查询。

从上下文中找不到 MediaQuery 祖先 已传递给 MediaQuery.of()。这可能发生,因为您没有 一个 WidgetsApp 或 MaterialApp 小部件(这些小部件引入了一个 MediaQuery),或者如果您使用的上下文来自 这些小部件上方的小部件。使用的上下文是:脚手架脏 状态:ScaffoldState#edc68(生命周期状态:已初始化,代码: 跟踪 2 个股票代码)相关的导致错误的小部件是:MyApp file:///S:/Businesses/Furniture/APP/movonpf/lib/main.dart:10:10 什么时候 抛出异常,这是堆栈: #0 MediaQuery.of (package:flutter/src/widgets/media_query.dart:819:5) #1 ScaffoldState.didChangeDependencies (package:flutter/src/material/scaffold.dart:2207:50) #2 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4786:12) #3 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5) ... 正常 元件安装(9 个框架)... ══════════════════════════════════════════════════ ══════════════════════════════════════════════════

════════ 小部件库捕获的异常 ══════════════════════════════════════════════════ ═════以下 断言在构建 MyApp(状态:_MyAppState#6de06)时被抛出: MediaQuery.of() 调用的上下文不包含 媒体查询。

从上下文中找不到 MediaQuery 祖先 已传递给 MediaQuery.of()。这可能发生,因为您没有 一个 WidgetsApp 或 MaterialApp 小部件(这些小部件引入了一个 MediaQuery),或者如果您使用的上下文来自 这些小部件上方的小部件。使用的上下文是:脚手架脏 状态:ScaffoldState#b5bf9(生命周期状态:已初始化,代码: 跟踪 2 个股票代码)相关的导致错误的小部件是:MyApp file:///S:/Businesses/Furniture/APP/movonpf/lib/main.dart:10:10 什么时候 抛出异常,这是堆栈: #0 MediaQuery.of (package:flutter/src/widgets/media_query.dart:819:5) #1 ScaffoldState.didChangeDependencies (package:flutter/src/material/scaffold.dart:2207:50) #2 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4786:12) #3 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5) #4 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14) ... ══════════════════════════════════════════════════ ══════════════════════════════════════════════════

════════ 小部件库捕获的异常 ══════════════════════════════════════════════════ ═════ MediaQuery.of() 调用的上下文不包含 媒体查询。相关的导致错误的小部件是:MyApp file:///S:/Businesses/Furniture/APP/movonpf/lib/main.dart:10:10

import 'package:flutter/material.dart';
import 'package:movonpf/views/login_page.dart';
import 'package:splashscreen/splashscreen.dart';
import 'package:firebase_core/firebase_core.dart';


void main() async 
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());


class MyApp extends StatefulWidget 
  @override
  _MyAppState createState() => _MyAppState();


class _MyAppState extends State<MyApp> 
  @override
  Widget build(BuildContext context) 
    return Scaffold(
        body: Container(
            child: SplashScreen(
            seconds: 1,
               image: Image.asset('assets/movonSplash.gif'),
              photoSize: 200.0,
              loaderColor: Colors.white,
              navigateAfterSeconds: LoginScreen(),
    ))
    );
  

【问题讨论】:

【参考方案1】:

MaterialApp 包装Scaffold 小部件以提供MediaQuery。

【讨论】:

以上是关于Flutter 问题:从上下文开始找不到 MediaQuery 祖先的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - 从应用程序收到错误 -32601:找不到方法

vscode 中flutter找不到模拟器

Flutter for web:找不到 chrome 作为连接的设备。如何启用 chrome 作为连接设备开始在 web 上开发?

Flutter / VSC 在你的 Flutter SDK 中找不到 Dart

Flutter - 代码签名错误:找不到“com.xxx.yourApp”的配置文件

Flutter 找不到 android sdk(图文详解)