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

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

【讨论】:

以上是关于Flutter 中的 LinearProgressIndicator 使用 Firebase的主要内容,如果未能解决你的问题,请参考以下文章

如何去除 Flutter 中的“XMLHttpRequest 错误”? (Django 后端,Flutter 前端)

Flutter 中的 pushReplacementNamed 和 popAndPushNamed 有啥区别?

Flutter 中的 shrinkWrap 属性有啥作用?

“flutter doctor”命令找不到安装在 Android Studio 中的 Flutter 和 Dart 插件

Flutter 中的路由

Flutter中的Timer