Fai*_*ash 3 dart flutter flutter-test flutter-web
我想从存储中获取文件后获取文件的大小这 是我获取大小的代码
trailing: FutureBuilder<int>(
builder: (context, snapshot) {
return Text(snapshot.data.toString());
},
future: files[index].length(),
),
Run Code Online (Sandbox Code Playgroud)
嘿,这是我编辑的与你的问题相关的代码。我已经使用 [file_picker][1] 这个包从我的设备存储中选取文件。
使用以下函数来获取所选文件的大小
static String getFileSizeString({required int bytes, int decimals = 0}) {
const suffixes = ["b", "kb", "mb", "gb", "tb"];
if (bytes == 0) return '0${suffixes[0]}';
var i = (log(bytes) / log(1024)).floor();
return ((bytes / pow(1024, i)).toStringAsFixed(decimals)) + suffixes[i];
}
Run Code Online (Sandbox Code Playgroud)
我从 PlatformFile 获取了文件大小 int ,如下所示
getFileSizeString(bytes: snapshot.data!.files[0].size);
Run Code Online (Sandbox Code Playgroud)
并得到了预期的文件大小结果。这里分享了完整的代码,请查看。
import 'dart:io';
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:file_picker/file_picker.dart';
class imagePicker extends StatefulWidget {
imagePicker({Key? key}) : super(key: key);
@override
State<imagePicker> createState() => _imagePickerState();
}
class _imagePickerState extends State<imagePicker> {
File? fileName;
Future<FilePickerResult?> pickFiles()async{
final result = await FilePicker.platform.pickFiles(
allowMultiple: false,
);
return result;
}
static String getFileSizeString({required int bytes, int decimals = 0}) {
const suffixes = ["b", "kb", "mb", "gb", "tb"];
var i = (log(bytes) / log(1024)).floor();
return ((bytes / pow(1024, i)).toStringAsFixed(decimals)) + suffixes[i];
}
@override
Widget build(BuildContext context) {
return FutureBuilder(
builder: (context, snapshot) {
if (snapshot.hasData){
getFileSizeString(bytes: snapshot.data!.files[0].size);
return Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(snapshot.data!.files[0].name),
Text(getFileSizeString(bytes: snapshot.data!.files[0].size)),
],
);
}else{
return Text("waiting");
}
},
future: pickFiles(),
);
}
}
Run Code Online (Sandbox Code Playgroud)
编码愉快![1]: https: //pub.dev/packages/file_picker
| 归档时间: |
|
| 查看次数: |
3426 次 |
| 最近记录: |