FutureBuilder小部件不返回我想要的页面- Flutter Firebase



当我尝试使用FutureBuilder小部件等待我的Firebase数据库的布尔值时,它没有返回我想要的值。

返回LoginPage(),它工作正常。

print1和print2同时被执行。6

Widget build(BuildContext context) {
return StreamBuilder(
stream: Auth().authStateChanges,
builder: (context, snapshot) {
if (snapshot.hasData) {
return FutureBuilder(
future: _getCurrentUserData(),
builder: ((context, AsyncSnapshot<bool> hasAccountSetup) {
if (hasAccountSetup.data == true) {
print("print1");
return MyHomePage();
} else {
print("print2");
return AccountSetup();
}
}));
} else {
return LoginPage();
}
},
);
}
Future<bool> _getCurrentUserData() async {
final DocumentSnapshot userDoc = await FirebaseFirestore.instance
.collection('Users')
.doc(Auth().currentUser!.uid)
.get();
return userDoc.get('HasSetupAccount');
}

如果HasSetupAccount是你的firestore数据库中的一个字段,那么试试这个:

Future<bool> _getCurrentUserData() async {
final DocumentSnapshot userDoc = await FirebaseFirestore.instance
.collection('Users')
.doc(Auth().currentUser!.uid)
.get();
Map<String, dynamic> data = docSnapshot.data()!;
//HasSetupAccount should be the name of the field you want to access
return data['HasSetupAccount']; 
}

最新更新