加载数据时出现错误屏幕 Flutter/Dart/FireBase
Getting Error screen while data loading Flutter/Dart/FireBase
我的页面中有 3 个 dart 文件。我有2页。
当我从 firebase 获取第二页的数据时,我得到的错误屏幕比我的数据加载时间还短。我检查了错误消息,它说我的数据为空。
我试过这样的循环进度指示器
return StreamBuilder(
stream: Firestore.instance.collection(UserInformation).document(user.uid).snapshots(),
builder: (context, snapshot) {
//==========show progress============
if (!snapshot.hasData) {
return CircularProgressIndicator()
}
var userDocument = snapshot.data;
// User userDocument here ..........
但是没用。
这是我从 firebase 获取数据的区域;
class GuessPage extends StatefulWidget {
late String topicname;
GuessPage({required this.topicname});
setType(String topic) {
var questionsOf;
CollectionReference questionsRef = FirebaseFirestore.instance.collection('questionSports');
if (topic=='Sports'){
questionsOf = questionsRef.doc('questionS');
}else if(topic=='Magazine'){
questionsOf = questionsRef.doc('questionM');
}
print(questionsOf);
return questionsOf;
}
@override
State<GuessPage> createState() => _GuessPageState();
}
这是我初始化 firebase 的主要 dart 文件
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
final Future<FirebaseApp> _initialization = Firebase.initializeApp();
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark(),
home: FutureBuilder(
future: _initialization,
builder: (context, snapshot) {
if (snapshot.hasError) {
return Center(
child: Text('Unexpected Error'),
);
} else if (snapshot.hasData) {
return InputPage();
} else {
return Center(
child: CircularProgressIndicator(),
);
}
}));
}
}
我猜你使用的是旧版本的 Firestore 包。
从 pub.dev 获取最新版本的 Firestore,就在此处:https://pub.dev/packages/cloud_firestore
然后从这里检查包的使用情况:https://firebase.flutter.dev/docs/firestore/usage
我的页面中有 3 个 dart 文件。我有2页。 当我从 firebase 获取第二页的数据时,我得到的错误屏幕比我的数据加载时间还短。我检查了错误消息,它说我的数据为空。 我试过这样的循环进度指示器
return StreamBuilder(
stream: Firestore.instance.collection(UserInformation).document(user.uid).snapshots(),
builder: (context, snapshot) {
//==========show progress============
if (!snapshot.hasData) {
return CircularProgressIndicator()
}
var userDocument = snapshot.data;
// User userDocument here ..........
但是没用。
这是我从 firebase 获取数据的区域;
class GuessPage extends StatefulWidget {
late String topicname;
GuessPage({required this.topicname});
setType(String topic) {
var questionsOf;
CollectionReference questionsRef = FirebaseFirestore.instance.collection('questionSports');
if (topic=='Sports'){
questionsOf = questionsRef.doc('questionS');
}else if(topic=='Magazine'){
questionsOf = questionsRef.doc('questionM');
}
print(questionsOf);
return questionsOf;
}
@override
State<GuessPage> createState() => _GuessPageState();
}
这是我初始化 firebase 的主要 dart 文件
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
final Future<FirebaseApp> _initialization = Firebase.initializeApp();
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData.dark(),
home: FutureBuilder(
future: _initialization,
builder: (context, snapshot) {
if (snapshot.hasError) {
return Center(
child: Text('Unexpected Error'),
);
} else if (snapshot.hasData) {
return InputPage();
} else {
return Center(
child: CircularProgressIndicator(),
);
}
}));
}
}
我猜你使用的是旧版本的 Firestore 包。
从 pub.dev 获取最新版本的 Firestore,就在此处:https://pub.dev/packages/cloud_firestore
然后从这里检查包的使用情况:https://firebase.flutter.dev/docs/firestore/usage