firebase - Flutter:StreamBuilder 调用了 3 次
问题描述
我有一个StreamBuilder,流来自firebase(云firestore),当我打印这个时,
print(!snapshot.hasData);
我得到了这些结果(3次),
true
false
true
......
请注意:在 Firestore 上我有一些文档,当我在我的应用程序上打开此页面时,它会显示文档一秒钟然后消失,我不知道为什么?
我的代码在这里
import 'package:Tawseelat/ReadyToUse/DataBase.dart';
import 'package:Tawseelat/ReadyToUse/NavigationBarForUser.dart';
import 'package:Tawseelat/ReadyToUse/Whatsapp.dart';
import 'package:Tawseelat/ReadyToUse/constants.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
class TakenOrder extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
'توصيلات',
style: TextStyle(fontWeight: FontWeight.bold),
),
),
body: StreamBuilder(
stream: DataBase().takenOrder,
builder: (context, snapshot) {
print(!snapshot.hasData);
if (!snapshot.hasData || snapshot.data.documents.length == 0) {
return Center(child: Text('لا توجد طلبات حاليا'));
} else {
return ListView.builder(
itemCount: snapshot.data.documents.length ?? 0,
itemBuilder: (context, index) {
var data = snapshot.data.documents[index];
return SingleChildScrollView(
child: Card(
child: Column(
children: [
Text(
'لقد قمت بقبول هذا الطلب',
),
Divider(),
Directionality(
textDirection: TextDirection.rtl,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Text(
'من',
style: TextStyle(
color: kPrimaryColor,
fontWeight: FontWeight.bold),
),
Text(
'الى',
style: TextStyle(
color: kPrimaryColor,
fontWeight: FontWeight.bold),
),
],
),
),
Directionality(
textDirection: TextDirection.rtl,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Text(
'${data['fromAlmohafda']} ( ${data['fromAlmntaqa']} )'),
Text(
'${data['toAlmohafda']} ( ${data['toAlmntaqa']} )'),
],
),
),
Divider(),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
FlatButton.icon(
onPressed: () {
//TODO for Done
DataBase().orderComplate(data.id);
},
icon: Icon(
Icons.done_all,
color: kPrimaryColor,
),
label: Get.width < 300
? Text('تم التسليم')
: Container()),
FlatButton.icon(
onPressed: () {
Whatsapp().launchURL(data['posterNo']);
},
icon: Icon(
Icons.message,
color: kPrimaryColor,
),
label: Text('لتواصل')),
FlatButton.icon(
onPressed: () {},
icon: Icon(
Icons.attach_money,
color: Colors.green,
),
label: Text('${data['price']} OMR')),
],
),
],
),
));
},
);
}
},
),
bottomNavigationBar: MyNavigationBarForUser(),
);
}
}
解决方案
推荐阅读
- javascript - JavaScript FIzzBuzz 使用类似于 Swift 的模式匹配的元组
- python - 类中的 Python 类
- python - Pandas 合并函数,将剩余值保存在数据框中
- php - 需要从 json url 获取双嵌套比特币价格数据
- python - 在python中合并表并将列组合在一起
- python-3.x - 使用带有使用者密钥和使用者秘密的 Python3 对 API 进行身份验证
- ruby - 厨师中不存在包 SQLServer2012SP4KB4018073x64ENU.exe 的源
- java - 即使找到值,String.contains() 和 stream.of.anymatch() 也会返回 false
- html - 我可以在 html 页面上嵌入 vpython 吗?
- node.js - 单击隐藏在 Pupeteer 中的链接标签中的按钮