如何在flutter中將文件大小轉(zhuǎn)換為mb、kb、gb等

我想在從存儲中獲取文件后獲取文件大小,這是獲取大小的代碼

 trailing: FutureBuilder<int>(
                        builder: (context, snapshot) {
                          return Text(snapshot.data.toString());
                        },
                        future: files[index].length(),
                      ),
? 最佳回答:

嘿,這是我編輯的與你的問題相關(guān)的代碼。我已使用[file_picker][1]此包從設(shè)備存儲中選擇文件。

使用以下函數(shù)獲取所選文件的大小

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];
    }

我從PlatformFile中獲取了文件大小int,如下所示

getFileSizeString(bytes: snapshot.data!.files[0].size);

并得到了文件大小的預(yù)期結(jié)果。在此處共享完整代碼,請檢查。

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(),
    );
  }
}

編碼愉快![1]: https://pub.dev/packages/file_picker

主站蜘蛛池模板: 精品人妻无码一区二区色欲产成人| 亚洲色一区二区三区四区| 国产大秀视频一区二区三区 | 狠狠综合久久av一区二区| 日本一区二区在线| 日韩aⅴ人妻无码一区二区| 日韩内射美女人妻一区二区三区 | 蜜桃臀无码内射一区二区三区| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 一区二区三区日本视频| 亚洲A∨精品一区二区三区下载| 在线精品亚洲一区二区三区| 国产99精品一区二区三区免费| 国产精品va一区二区三区| 亚洲欧美日韩中文字幕在线一区| 91精品一区二区综合在线| 一区二区在线免费观看| 精品一区二区三区免费毛片爱| 国产视频一区在线观看| 亚洲一区爱区精品无码| 亚洲AV无码第一区二区三区| 日韩精品一区二区三区四区 | 精品久久综合一区二区| 亚洲AV综合色一区二区三区| 精品无码一区二区三区爱欲九九| 色欲综合一区二区三区| 少妇无码一区二区三区| 国语对白一区二区三区| 精品国产一区二区三区在线观看 | 国产视频一区二区在线播放| 女人和拘做受全程看视频日本综合a一区二区视频 | 日本在线视频一区二区三区| 国产精品免费视频一区| 色视频综合无码一区二区三区| 精品一区二区三区中文| 中文字幕一区二区日产乱码| 国产在线精品一区二区在线观看 | 午夜视频久久久久一区 | 日本一区二区三区在线视频观看免费| 国产在线观看一区二区三区| 变态调教一区二区三区|