我正在尝试对Firebase Firestore数据进行查询,并将结果显示为列表。通常,当我这样做时,我使用streambuilder
,它会在任何数据更改时更新结果。我想知道如何在不订阅流的情况下只显示一次相同的数据。这是我的streambuilder
代码,它会在更改时更新。
StreamBuilder<QuerySnapshot>(
stream: FirebaseFirestore.instance
.collection('announcements')
.orderBy('date', descending: true)
.snapshots(),
builder:
(BuildContext context, AsyncSnapshot<QuerySnapshot> snapshots) {
if (snapshots.connectionState == ConnectionState.active &&
snapshots.hasData) {
return ListView(
shrinkWrap: true,
physics: const BouncingScrollPhysics(),
children: snapshots.data!.size == 0
? [
const Padding(
padding: EdgeInsets.only(top: 10),
child: Text(
"You have no announcements",
style: TextStyle(
height: 1.0,
fontFamily: "urwmedium",
color: Color(0xffD5D6D7),
fontSize: 20,
),
),
),
]
: snapshots.data!.docs.map(
(DocumentSnapshot document) {
Map<String, dynamic> data =
document.data()! as Map<String, dynamic>;
return Text(
data['announcementTitle'],
);
},
).toList(),
);
}
return Center(
child: CircularProgressIndicator(
color: CustomColors.textColor,
),
);
},
),
上面的代码是有效的,但是同样,它是实时加载信息的。如果我希望它在打开时只加载一次,那么代码会是什么呢?
1条答案
按热度按时间dw1jzc5e1#
因为
StreamBuilder
有助于获取集合快照流要只获取数据一次,请改用
FutureBuilder
: