在带有 Flutter 的 StreamBuilder 中使用额外的 Future
Using an additional Future inside of a StreamBuilder with Flutter
我正在尝试动态拉取网站图标并将它们作为前导图标放置在构成 ListView 的 ListTiles 中,它全部包含在 StreamBuilder 中。 StreamBuilder 'stream' 变量是一个 FirebaseFirestore 实例,如下所示:
streamBuilder = StreamBuilder<QuerySnapshot>(
stream: FirebaseFirestore.instance.collection('users').doc(snapshot.data.uid).collection('vault').snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> querySnapShot){
因此每次更新快照时都会更新流。快照包含文档,这些文档在 for 循环中迭代以填充列表视图中的每个列表块。每个文档包含一个 url。我需要使用 'url' 来检索 Listtile 各自的图标图标。
import 'package:favicon/favicon.dart' as iconz;
for (var doc in querySnapShot.data.docs) {
String urlIcon = doc['urlIcon'];
iconUse = iconz.Favicon.getBest(urlIcon);
leading: iconUse,
title:...
问题是 getBest() 函数 returns 是一个未来。即 在 StreamBuilder 中不允许对我的收藏夹 getBest() 函数使用 'await',并且我的 StreamBuilder 已经依赖于快照流。如何在已经依赖于不同流的 StreamBuilder 中使用额外的 Future?
您可以为 leading: iconUse
使用 FutureBuilder
import 'package:favicon/favicon.dart' as iconz;
for (var doc in querySnapShot.data.docs) {
String urlIcon = doc['urlIcon'];
//iconUse = iconz.Favicon.getBest(urlIcon);
leading: FutureBuilder(
future: iconz.Favicon.getBest(urlIcon),
builder: (context, snapshot2) {
if (snapshot2.hasData) {
return snapshot2.data; //or whatever object you want to return from your function.
}
),
title:...
我正在尝试动态拉取网站图标并将它们作为前导图标放置在构成 ListView 的 ListTiles 中,它全部包含在 StreamBuilder 中。 StreamBuilder 'stream' 变量是一个 FirebaseFirestore 实例,如下所示:
streamBuilder = StreamBuilder<QuerySnapshot>(
stream: FirebaseFirestore.instance.collection('users').doc(snapshot.data.uid).collection('vault').snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> querySnapShot){
因此每次更新快照时都会更新流。快照包含文档,这些文档在 for 循环中迭代以填充列表视图中的每个列表块。每个文档包含一个 url。我需要使用 'url' 来检索 Listtile 各自的图标图标。
import 'package:favicon/favicon.dart' as iconz;
for (var doc in querySnapShot.data.docs) {
String urlIcon = doc['urlIcon'];
iconUse = iconz.Favicon.getBest(urlIcon);
leading: iconUse,
title:...
问题是 getBest() 函数 returns 是一个未来。即 在 StreamBuilder 中不允许对我的收藏夹 getBest() 函数使用 'await',并且我的 StreamBuilder 已经依赖于快照流。如何在已经依赖于不同流的 StreamBuilder 中使用额外的 Future?
您可以为 leading: iconUse
import 'package:favicon/favicon.dart' as iconz;
for (var doc in querySnapShot.data.docs) {
String urlIcon = doc['urlIcon'];
//iconUse = iconz.Favicon.getBest(urlIcon);
leading: FutureBuilder(
future: iconz.Favicon.getBest(urlIcon),
builder: (context, snapshot2) {
if (snapshot2.hasData) {
return snapshot2.data; //or whatever object you want to return from your function.
}
),
title:...