You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Realm-MongoDB重连后如何查询同步剩余上传下载数据量?

Flutter + Realm-MongoDB 恢复连接后获取剩余同步数据量

要实现设备恢复连接后获取剩余上传、下载数据量,核心是利用Realm Flutter SDK的SyncSession类及其进度监听API,具体操作如下:

  • 获取同步会话实例
    每个Realm实例对应一个SyncSession,直接通过Realm对象的syncSession属性获取:

    final realm = Realm(yourSyncConfiguration);
    final syncSession = realm.syncSession;
    
  • 监听同步状态与剩余数据量
    当设备恢复连接时,syncSession的状态会切换为SyncSessionState.active,此时通过addProgressListener分别监听上传、下载进度,计算剩余数据量:

    // 监听上传剩余量
    syncSession.addProgressListener(
      SyncDirection.upload,
      SyncProgressMode.reportIndefinitely,
      (progress) {
        if (syncSession.state == SyncSessionState.active) {
          final remainingBytes = progress.totalBytes - progress.transferredBytes;
          final remainingKB = remainingBytes / 1024;
          // 可将剩余量用于UI展示或日志记录
          print('剩余上传: ${remainingKB.toStringAsFixed(2)} KB');
        }
      },
    );
    
    // 监听下载剩余量
    syncSession.addProgressListener(
      SyncDirection.download,
      SyncProgressMode.reportIndefinitely,
      (progress) {
        if (syncSession.state == SyncSessionState.active) {
          final remainingBytes = progress.totalBytes - progress.transferredBytes;
          final remainingKB = remainingBytes / 1024;
          print('剩余下载: ${remainingKB.toStringAsFixed(2)} KB');
        }
      },
    );
    
  • 关键细节提示

    • SyncProgressMode.reportIndefinitely会持续报告进度直到同步任务完成,适合恢复连接后的全程监控;若只需单次获取当前剩余量,可改用SyncProgressMode.forCurrentlyOutstandingWork。
    • 当progress.totalBytes为0时,代表当前没有待同步的上传/下载任务。
    • 确保你的Realm Flutter SDK版本在1.0.0及以上,该API在旧版本中未提供。

内容的提问来源于stack exchange,提问作者rrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 01:42:41