[英]No MediaQuery widget ancestor found.The relevant error-causing widget was FutureBuilder<FirebaseApp>
No MediaQuery widget ancestor found.未找到 MediaQuery 小部件祖先。 The relevant error-causing widget was FutureBuilder Scaffold widgets require a MediaQuery widget anchester.The Specific widget that could not find a Mediaquery anchester was: Scaffold相关的导致错误的小部件是 FutureBuilder Scaffold 小部件需要 MediaQuery 小部件 anchester。找不到 Mediaquery anchester 的特定小部件是:Scaffold
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:todolist/colorshades/color.dart';
import 'package:todolist/database/services.dart';
import 'Loading.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: Firebase.initializeApp(),
builder: (context, snapshot) {
if (snapshot.hasError) {
return Scaffold(
body: Center(child: Text(snapshot.error.toString())),
);
}
if (snapshot.connectionState == ConnectionState.waiting) {
return Loading();
}
return MaterialApp(
debugShowCheckedModeBanner: false,
home: TodoList(),
theme: ThemeData(
primarySwatch: Colors.pink,
),
);
},
);
}
}
Please make sure you have implemented following steps:请确保您已实施以下步骤:
1: Add dep in pubspecs.yaml 1:在pubspecs.yaml中添加dep
firebase_core: // latest version
2: Add dependency & service in the app build.gradle
file. 2:在app build.gradle
文件中添加依赖&服务。
dependencies {
implementation platform('com.google.firebase:firebase-bom:26.5.0')
}
apply plugin: 'com.google.gms.google-services'
3: register android app and add google-service.json under app
directory only 3:注册android app,只在app
目录下添加google-service.json
4: Initialization in main.dart
4:在main.dart
初始化
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
This error indicates that MediaQuery
was referenced before it was provided to the widget tree (which happens in MaterialApp
widget in your case).此错误表明MediaQuery
在提供给小部件树之前已被引用(在您的情况下发生在MaterialApp
小部件中)。 You might want to move your MaterialApp
widget to the top of your widget tree, above Scaffold
widget (preferably to the very top, above your FutureBuilder
).您可能希望将MaterialApp
小部件移动到小部件树的顶部,在Scaffold
小部件上方(最好是最顶部,在FutureBuilder
上方)。
So it would looke like this (assuming your TodoList
and Loading
widgets both contain Scaffold
, otherwise wrap your FutureBuilder
in Scaffold
):所以它看起来像这样(假设你的TodoList
和Loading
小部件都包含Scaffold
,否则将你的FutureBuilder
包装在Scaffold
):
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.pink,
),
home: FutureBuilder(
future: Firebase.initializeApp(),
builder: (context, snapshot) {
if (snapshot.hasError) {
return Scaffold(
body: Center(child: Text(snapshot.error.toString())),
);
}
if (snapshot.connectionState == ConnectionState.waiting) {
return Loading();
}
return TodoList();
},
),
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.