Flutter 中的 LinearProgressIndicator 使用 Firebase
Posted
技术标签:
【中文标题】Flutter 中的 LinearProgressIndicator 使用 Firebase【英文标题】:LinearProgressIndicator in Flutter using Firebase 【发布时间】:2019-04-30 19:17:18 【问题描述】:如何使用 LinearProgressIndicator 制作下载栏,下载数据来自 Firebase 存储? 我目前正在使用的功能:
Future<int> downloadBuscaDB() async
String path = await dbManager.localPathFiles();
String fileDBZip = ConstData.dbZip;
FirebaseStorage storage = new FirebaseStorage();
StorageReference ref = storage.ref().child(fileDBZip);
StorageFileDownloadTask storageFileDownloadTask = ref.writeToFile(File('$path/$fileDBZip'));
FileDownloadTaskSnapshot fileDownloadTaskSnapshot = await storageFileDownloadTask.future;
int bCount = fileDownloadTaskSnapshot.totalByteCount;
return bCount;
【问题讨论】:
查看这个 GitHub 问题线程:github.com/flutter/flutter/issues/20803#issuecomment-437726304。特别是,偶数快照似乎可以为您提供传输的字节数和总字节数:_progress = event.snapshot.bytesTransferred.toDouble() / event.snapshot.totalByteCount.toDouble();
你能给我举个例子吗?我只能得到总字节数。
你用的是什么版本的flutter和firestore插件?如果您提供一个您尝试过的示例,也会有所帮助。
我只能带总字节数
今天早上再次查看了这个问题,并在我这边发现了同样的问题。你可以看到上传进度,但看不到下载进度。
【参考方案1】:
firebase_storage 有 TaskSnapshot bytesTransferred
和 totalBytes
可用于计算和显示任务进度。
StreamBuilder<firebase_storage.TaskSnapshot>(
stream: task.snapshotEvents,
builder: (
BuildContext context,
AsyncSnapshot<firebase_storage.TaskSnapshot> asyncSnapshot,
)
if (!asyncSnapshot.hasError && snapshot != null)
debugPrint('Progress: $snapshot.bytesTransferred/$snapshot.totalBytes');
)
同样,该类可用于跟踪下载进度。
【讨论】:
以上是关于Flutter 中的 LinearProgressIndicator 使用 Firebase的主要内容,如果未能解决你的问题,请参考以下文章
如何去除 Flutter 中的“XMLHttpRequest 错误”? (Django 后端,Flutter 前端)
Flutter 中的 pushReplacementNamed 和 popAndPushNamed 有啥区别?
“flutter doctor”命令找不到安装在 Android Studio 中的 Flutter 和 Dart 插件