firebase - 未来的 for 循环在 Flutter 中不起作用并打印错误
问题描述
我有一个future
与未来的构建器连接的功能,可以从中获取图像Firebase storage
。因为我会得到多个图像,所以我创建了一个 for 循环,如下所示:
FutureBuilder(
future: getImages(),
builder: (context, AsyncSnapshot<dynamic> snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return ListView.builder(
shrinkWrap: true,
itemCount: 2,//snapshot.data.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
contentPadding: EdgeInsets.all(8.0),
leading: Image.network("https://placehold.it/500x500", fit: BoxFit.fill),
);
});
} else if (snapshot.connectionState == ConnectionState.none) {
return Text("No data");
}
return CircularProgressIndicator();
},
),
getImages() async{
var showcaseCode = await page.where("userID",isEqualTo: FirebaseAuth.instance.currentUser.uid).get();
List downloadUrlList = [];
for(var i = 0; i < showcaseCode.docs.length; i++){
var url = await FirebaseStorage.instance.ref()
.child("showcase_images")
.child(showcaseCode.docs[0]["showcase_code"])
.getDownloadURL()
.toString();
downloadUrlList.add(url),
}
return downloadUrlList;
}
但它没有用,所以我尝试了以下操作:
getImages() async{
for(var i = 0; i < 10; i++){
print("Test");
}
return true;
}
我在控制台中收到以下错误和打印:
I/flutter ( 6870): Test
I/chatty ( 6870): uid=10153(com.nanowiresoft.memeon_main) 1.ui identical 8 lines
I/flutter ( 6870): Test
W/DynamiteModule( 6870): Local module descriptor class for providerinstaller not found.
I/DynamiteModule(6870): Considering local module providerinstaller:0 and remote module providerinstaller:0
W/ProviderInstaller( 6870): Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
I/FirebaseAuth( 6870): [FirebaseAuth:] Preparing to create service connection to fallback implementation
W/System ( 6870): Ignoring header X-Firebase-Locale because its value was null.
D/FirebaseAuth( 6870): Notifying id token listeners about user ( gLOnpLqdStXqGbz0iHQpbBlVbN62 ).
我在其他线程中看到过这个错误,但我无法修复它。我是 Flutter 的新手,所以我现在不太了解。感谢帮助!
解决方案
添加Future
为返回类型。必须工作
Future<List<String>> getImages() async{
var showcaseCode = await page.where("userID",isEqualTo:
FirebaseAuth.instance.currentUser.uid).get();
List downloadUrlList = [];
for(var i = 0; i < showcaseCode.docs.length; i++){
var url = await FirebaseStorage.instance.ref()
.child("showcase_images")
.child(showcaseCode.docs[0]["showcase_code"])
.getDownloadURL()
.toString();
downloadUrlList.add(url),
}
return downloadUrlList;
}
推荐阅读
- npm - 呃!错误号 ETIMEDOUT
- mysql - WinNMP 升级 MariaDB 到 MySQL
- android - 如何使 HTML 文件输入仅选择移动设备上的文档格式?
- arrays - 在数组中查找最后出现的匹配条件
- react-native - 我可以使用 FileSystem 将 pdf 文件下载到 expo 的本地设备吗?
- reactjs - 如何使用 ReactJS 应用程序开发和测试 Firebase 可调用函数?
- amazon-web-services - 过滤加载到 Redshift 中的数据
- javascript - ESLint:可能的竞争条件:`user.registered` 可能会根据 `user.registered` 的过时值重新分配。(需要原子更新)
- c# - 如何使用 MS Graph 将 Azure 门户注册的应用程序限定为只能访问 sharepoint 中的特定日历
- html - Jumbotron 背景图片与 HTML 背景图片不同步