flutter_file_manager

一组实用工具,可帮助管理 Android 系统中的文件和目录。

您正在创建文件管理器应用或图库应用。

用法

要使用此软件包,请在您的pubspec.yaml文件中添加这些
依赖项。

dependencies:
  flutter:
    sdk: flutter
  path: 1.6.2
  path_provider: 0.5.0+1
  flutter_file_manager: ^0.1.1

并在您的
android/app/src/main/AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

不要忘记手动或通过此插件为您的应用授予存储权限 simple_permissions

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

// packages
import 'package:flutter_file_manager/flutter_file_manager.dart';
import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart' as p;

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: Scaffold(
          appBar: AppBar(
            title: Text("Flutter File Manager Demo"),
          ),
          body: FutureBuilder(
            future: _files(), // a previously-obtained Future<String> or null
            builder: (BuildContext context, AsyncSnapshot snapshot) {
              switch (snapshot.connectionState) {
                case ConnectionState.none:
                  return Text('Press button to start.');
                case ConnectionState.active:
                case ConnectionState.waiting:
                  return Text('Awaiting result...');
                case ConnectionState.done:
                  if (snapshot.hasError)
                    return Text('Error: ${snapshot.error}');
                  return snapshot.data != null
                      ? ListView.builder(
                          itemCount: snapshot.data.length,
                          itemBuilder: (context, index) => Card(
                                  child: ListTile(
                                title: Text(snapshot.data[index].absolute.path),
                                subtitle: Text(
                                    "Extension: ${p.extension(snapshot.data[index].absolute.path).replaceFirst('.', '')}"), // getting extension
                              )))
                      : Center(
                          child: Text("Nothing!"),
                        );
              }
              return null; // unreachable
            },
          )),
    );
  }

  _files() async {
    var root = await getExternalStorageDirectory();
    var fm = FileManager(root: root);
    var files = await fm.filesTree(excludedPaths: ["/storage/emulated/0/Android"]);
    return files;
  }
}

示例

特点

  • 文件详细信息
  • 搜索文件或目录:支持正则表达式
  • 最近创建的文件:您可以从树中排除目录列表
  • 仅目录树:您可以从树中排除目录列表
  • 仅文件树:您可以从树中排除目录列表
  • 从特定点列出文件
  • 删除文件
  • 删除目录
  • 临时文件
  • 按类型、大小、日期等排序文件。

GitHub

https://github.com/Eagle6789/flutter_file_manager