我正在嘗試通過 StreamBuilder 在我的應用程序中添加一個檢查,以根據用戶的文檔是否存在於 Firestore 中向用戶顯示不同的屏幕。我的代碼在技術上有效,但在熱重載時,它會在移動到我的“UserHomeScreen”之前顯示我的“AddUser”屏幕幾秒鐘。我想知道如何糾正這個問題,如果用戶文檔存在,“AddUser”屏幕根本不會顯示我的“AddUser”屏幕。
這是我的代碼:
class UserStream extends StatelessWidget {
const UserStream({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
FirebaseAuth auth = FirebaseAuth.instance;
String uid = auth.currentUser!.uid.toString();
return StreamBuilder<dynamic>(
stream: FirebaseFirestore.instance.collection('users').doc(uid).snapshots(),
builder: (context, snapshot) {
if (snapshot.hasData && snapshot.data!.exists) {
return const UserHomeScreen();
} else {
return AddUser(youtubeLink: '', bio: '', bioLink: '', displayName: '', instaLink: '', profilePhoto: '', tiktokLink: '', username: '',);
}
},
);
}
}
你可以像這樣構建你的構建器:
builder: (context, snapshot) {
if (snapshot.hasData) {
if (snapshot.data!.exists){
return const UserHomeScreen();
} else {
return AddUser(youtubeLink: '', bio: '', bioLink: '', displayName: '', instaLink: '', profilePhoto: '', tiktokLink: '', username: '',);
}
} else {
return CircularProgressIndicator();
}
},
這樣,您就可以顯示CircularProgressIndicator
正在解析的快照。此時,您不知道您的數據是否存在。
一旦解決了快照並且您有信息(無論您的數據是否存在),您就可以顯示相應的屏幕。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句