插件介绍

FlutterTPC Disk Space Plus 是一个跨平台的磁盘空间管理插件,专为 Flutter 应用设计,用于获取设备的磁盘空间信息。该插件提供了简单易用的 API,支持获取设备的总磁盘空间、可用磁盘空间以及指定路径的可用磁盘空间。该插件已针对鸿蒙系统进行了专门适配,确保在鸿蒙设备上能够稳定运行并准确获取磁盘空间信息。

主要功能包括:

  • 获取设备总磁盘空间
  • 获取设备可用磁盘空间
  • 获取指定路径的可用磁盘空间
  • 获取平台版本信息

如何使用插件

1. 包的引入

由于这是一个自定义修改版本的三方库,需要以 Git 形式引入。在你的 Flutter 项目中,修改 pubspec.yaml 文件,在 dependencies 部分添加以下配置:

dependencies:
  disk_space_plus:
    git:
      url: "https://github.com/your-repository/fluttertpc_disk_space_plus.git"
      path: "fluttertpc_disk_space_plus-master"

请将 url 替换为实际的 Git 仓库地址。

2. 导入包

在需要使用该插件的 Dart 文件中,导入包:

import 'package:disk_space_plus/disk_space_plus.dart';

3. API 调用

获取平台版本
String? platformVersion = await DiskSpacePlus.platformVersion;
print('平台版本:$platformVersion');

在鸿蒙设备上,将返回鸿蒙系统的版本信息。

获取总磁盘空间
double? totalDiskSpace = await DiskSpacePlus.getTotalDiskSpace;
print('总磁盘空间:${totalDiskSpace?.toStringAsFixed(2)} MB');

该方法返回设备的总磁盘空间,单位为 MB。

获取可用磁盘空间
double? freeDiskSpace = await DiskSpacePlus.getFreeDiskSpace;
print('可用磁盘空间:${freeDiskSpace?.toStringAsFixed(2)} MB');

该方法返回设备的可用磁盘空间,单位为 MB。

获取指定路径的可用磁盘空间
try {
  double? freeSpaceForPath = await DiskSpacePlus.getFreeDiskSpaceForPath('/data');
  print('/data 路径可用空间:${freeSpaceForPath?.toStringAsFixed(2)} MB');
} catch (e) {
  print('获取路径空间失败:$e');
}

该方法返回指定路径的可用磁盘空间,单位为 MB。如果指定的路径不存在,将抛出异常。

鸿蒙系统适配说明

该插件针对鸿蒙系统进行了专门的适配,主要体现在以下几个方面:

  1. 使用鸿蒙系统 API:通过 @kit.CoreFileKit 提供的 statfs 接口获取磁盘空间信息
  2. 权限处理:自动处理获取磁盘空间所需的权限
  3. 路径获取:通过应用上下文获取正确的文件路径
  4. 单位转换:将鸿蒙系统返回的字节数转换为 MB,方便开发者使用

在鸿蒙平台的实现中,插件使用了 statfs.getFreeSizeSync()statfs.getTotalSizeSync() 方法来获取磁盘空间信息,并通过应用的缓存目录作为基准路径来获取设备的整体磁盘空间。

完整代码示例

下面是一个简单的示例,展示如何在 Flutter 应用中使用该插件:

import 'package:flutter/material.dart';
import 'package:disk_space_plus/disk_space_plus.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Disk Space Plus Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Disk Space Plus Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  double? _totalDiskSpace;
  double? _freeDiskSpace;
  double? _freeSpaceForPath;
  String? _platformVersion;

  
  void initState() {
    super.initState();
    _getDiskSpaceInfo();
  }

  Future<void> _getDiskSpaceInfo() async {
    double? totalDiskSpace;
    double? freeDiskSpace;
    double? freeSpaceForPath;
    String? platformVersion;

    try {
      platformVersion = await DiskSpacePlus.platformVersion;
      totalDiskSpace = await DiskSpacePlus.getTotalDiskSpace;
      freeDiskSpace = await DiskSpacePlus.getFreeDiskSpace;
      freeSpaceForPath = await DiskSpacePlus.getFreeDiskSpaceForPath('/data');
    } catch (e) {
      print('获取磁盘空间信息失败:$e');
    }

    setState(() {
      _platformVersion = platformVersion;
      _totalDiskSpace = totalDiskSpace;
      _freeDiskSpace = freeDiskSpace;
      _freeSpaceForPath = freeSpaceForPath;
    });
  }

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('平台版本: $_platformVersion'),
            Text('总磁盘空间: ${_totalDiskSpace?.toStringAsFixed(2) ?? 'N/A'} MB'),
            Text('可用磁盘空间: ${_freeDiskSpace?.toStringAsFixed(2) ?? 'N/A'} MB'),
            Text('/data 路径可用空间: ${_freeSpaceForPath?.toStringAsFixed(2) ?? 'N/A'} MB'),
            Padding(
              padding: const EdgeInsets.all(20.0),
              child: ElevatedButton(
                onPressed: _getDiskSpaceInfo,
                child: Text('刷新磁盘空间信息'),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

总结

FlutterTPC Disk Space Plus 是一个功能实用的磁盘空间管理插件,为 Flutter 开发者提供了便捷的磁盘空间信息获取能力。该插件针对鸿蒙系统进行了专门适配,确保在鸿蒙设备上能够稳定运行并准确获取磁盘空间信息。

使用该插件,开发者可以轻松实现以下功能:

  • 获取设备的总磁盘空间
  • 获取设备的可用磁盘空间
  • 获取指定路径的可用磁盘空间
  • 获取平台版本信息

通过 Git 形式引入该自定义修改版本的三方库,可以灵活地集成到你的 Flutter 项目中,为用户提供更好的应用体验。在使用过程中,请注意不同平台之间的路径差异,确保在调用 getFreeDiskSpaceForPath 方法时使用正确的路径。

该插件的 API 设计简洁明了,易于集成和使用,适合各种需要磁盘空间管理功能的 Flutter 应用。无论是文件管理应用、下载应用还是需要监控磁盘空间的应用,FlutterTPC Disk Space Plus 都是一个不错的选择。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐