我正在尝试使用 Firestore 构建一个 Flutter 应用程序。 我正在尝试编写一个代码,其中如果一个文档存在于 Firestore 的集合中,那么用户会转到一个新屏幕,否则他会转到另一个屏幕 FirebaseAuth auth = FirebaseAuth.instance;
class check extends StatelessWidget {
static const String routeName = '/checkif';
@override
Widget build(BuildContext context) {
final firebaseUser = context.watch<User>();
final snapshot = fb.collection("Profile").doc(firebaseUser.uid).get();
if (snapshot == null) {
return addparentcompany();
} else{
return homepage();}
}
}
即使快照为空,也会被路由到主页而不是母公司
答案 0 :(得分:1)
因为获取数据需要时间,您将不得不在检索数据时等待数据。因此,您必须使用 FutureBuilder
body: FutureBuilder(
future: fb.collection("Profile").doc(firebaseUser.uid).get(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return addparentcompany();
} else {
if (snapshot.data.data() == null) {
return Center(
child: Text('An error occured'),
);
} else return homepage();
}
},
),