Flutter中如何将文件大小转换为MB、KB、GB等单位?
获取文件大小的优化实现
你的代码已经实现了基本的文件大小获取逻辑,但可以补充状态处理和格式优化,避免潜在问题并提升用户体验:
trailing: FutureBuilder<int>( builder: (context, snapshot) { // 处理加载中的状态 if (snapshot.connectionState == ConnectionState.waiting) { return const Text("计算中..."); } // 处理获取失败的情况 if (snapshot.hasError) { return const Text("获取失败"); } // 处理数据为空的边界情况 final fileSize = snapshot.data ?? 0; // 将字节数格式化为易读的单位 String formattedSize; if (fileSize < 1024) { formattedSize = "$fileSize B"; } else if (fileSize < 1024 * 1024) { formattedSize = "${(fileSize / 1024).toStringAsFixed(2)} KB"; } else { formattedSize = "${(fileSize / (1024 * 1024)).toStringAsFixed(2)} MB"; } return Text(formattedSize); }, future: files[index].length(), ),
优化点说明:
- 增加加载状态提示,让用户知道正在计算文件大小
- 捕获错误状态,避免因文件读取失败导致的界面异常
- 处理
snapshot.data为null的情况,防止空指针异常 - 将原始字节数转换为用户更易理解的B/KB/MB单位
内容的提问来源于stack exchange,提问作者Faizan Abbas Bangash
相关产品推荐
相关产品推荐

