Flutter使用Firebase实现的线性进度指示器

3
如何使用LinearProgressIndicator创建下载进度条并从Firebase Storage获取下载数据? 我目前正在使用的函数:
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 问题线程:https://github.com/flutter/flutter/issues/20803#issuecomment-437726304。特别是,似乎连续快照可以为您提供传输的字节数和总字节数:`_progress = event.snapshot.bytesTransferred.toDouble() / event.snapshot.totalByteCount.toDouble();`。 - Alex Meuer
请问你能举个例子吗?我只能得到总字节数。 - Oséias Ribeiro
你使用的Flutter和Firestore插件版本是什么?如果您提供一个尝试过的示例,那将会更有帮助。 - Alex Meuer
// firebase_storage: 1.0.4 // flutter 1.0 - Oséias Ribeiro
1
我只能带来总字节数。 - Oséias Ribeiro
1
今天早上我又仔细研究了一下,发现我的问题和你的一样。似乎可以获取上传进度,但无法获取下载进度。 - Alex Meuer
1个回答

0

firebase_storageTaskSnapshot 属性,包括 bytesTransferredtotalBytes,您可以使用它们来计算和显示任务的进度。

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}');
    }
  }
)

同样地,该类也可用于跟踪下载进度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接