【发布时间】:2021-11-23 08:51:10
【问题描述】:
我正在尝试通过 StreamBuilder 在我的应用中添加一个检查,以根据用户的文档是否存在于 Firestore 中向用户显示不同的屏幕。我的代码在技术上有效,但在热重载时,它会显示我的“AddUser”屏幕几秒钟,然后再转到我的“UserHomeScreen”。我想知道如何纠正这个问题,如果用户文档存在,“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: '',);
}
},
);
}
}
【问题讨论】:
-
这是一个非常糟糕的检查根逻辑的做法。
-
@BloodLoss 我尝试使用 Future
但无法正常工作。我也不想使用共享首选项。 -
但这不是好的做法。不需要使用本地缓存来处理这个
-
@BloodLoss 那你推荐我用什么?
标签: firebase flutter dart google-cloud-firestore