Firebase 为什么我的生成器函数要执行两次?
我想检查是否存在使用此用户名和帐户类型的集合,这意味着我想查看用户是否是高级用户 应用程序运行时的输出为: 好啊 用户 好啊 模型 为什么它会打印两次“ok”,看起来快照既有数据也没有数据 这是代码的一部分,如果没有说明什么,我将提供完整的类:Firebase 为什么我的生成器函数要执行两次?,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我想检查是否存在使用此用户名和帐户类型的集合,这意味着我想查看用户是否是高级用户 应用程序运行时的输出为: 好啊 用户 好啊 模型 为什么它会打印两次“ok”,看起来快照既有数据也没有数据 这是代码的一部分,如果没有说明什么,我将提供完整的类: @override Widget build(BuildContext context) { return Scaffold( body: isLoading ? Container(
@override
Widget build(BuildContext context) {
return Scaffold(
body: isLoading
? Container(
child: Center(child: CircularProgressIndicator()),
)
: StreamBuilder(
stream: Firestore.instance
.collection('users')
.where('email', isEqualTo: email)
.where('account', isEqualTo: 'model')
.snapshots(),
builder: (context, snapshot) {
print('ok');
if (!snapshot.hasData) {
box.put('account', 'user');
print(box.get('account'));
} else {
box.put('account', 'model');
print(box.get('account'));
}
return Container(...
提前感谢您,也许有最简单的方法可以查看是否存在使用此类数据的收集?据我所知,这是按预期进行的。当您的小部件首次呈现时,它开始从Firestore加载
流的数据。此时,snapshot.hasData
仍然是false
,因此它使用if
块呈现小部件
然后,当数据变得可用时,流被更新,这将触发小部件再次呈现。此时,snapshot.hasData
为true
,因此它使用else
块呈现您的小部件。isLoading
可能多次被触发,导致函数多次运行