未找到 MediaQuery 小部件祖先。相關的導致錯誤的小部件是 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,
),
);
},
);
}
}

uj5u.com熱心網友回復:
此錯誤表明MediaQuery它在提供給小部件樹之前已被參考(MaterialApp在您的情況下發生在小部件中)。您可能希望將您的MaterialApp小部件移動到小部件樹的頂部,小部件上方Scaffold(最好是最頂部,在您的 上方FutureBuilder)。
所以它看起來像這樣(假設你的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();
},
),
);
uj5u.com熱心網友回復:
請確保您已實施以下步驟:
1:在pubspecs.yaml中添加dep
firebase_core: // latest version
2:在appbuild.gradle檔案中添加依賴和服務。
dependencies {
implementation platform('com.google.firebase:firebase-bom:26.5.0')
}
apply plugin: 'com.google.gms.google-services'
3:注冊android app,只在目錄下添加google-service.jsonapp
4:初始化 main.dart
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/355063.html
