如何使用 Flutter 访问 Windows 上的文件夹

问题描述 投票:0回答:1

我想使用 Flutter 访问 Windows 上的特定文件夹。

Flutter 有一个名为 File Picker 的包,但我只能使用这个包选择文件。

还有win32包,但似乎技术性太强,我看不懂。

例如我有一个文件夹 -> C: est。

我需要使用 flutter 查看此文件夹(C: est)中的所有文件,最好以 listView 或表格格式查看。

我该怎么做?

谢谢你

flutter
1个回答
0
投票

如果您只想列出目标文件夹中存在的所有文件名,则无需使用

file_picker
包即可实现。有
dart:io
可以满足这种需求。

导入

dart:io
将此导入放在代码顶部

import 'dart:io';

首先创建这个异步函数

getDirList()

Future<List> getDirList() async {
  // Initiate your directory target.
  //
  // Make sure your path is correct.
  final Directory dir = Directory('your path');

  // Create variable to insert the files path
  List files = [];

  // Retrieve files path that existed in your directory target.
  //
  // fyi: [dir.list()] using stream not future.
  await for (var entity in dir.list()) {
    // Original value of [entity.path] is String of full path of file, so i manipulate
    // String to only show the name of the file.
    // 
    // If you want to the original value just use:
    // `entity.path`
    // That variable will returned a String.
    files.add(entity.path.split('/').last);
  }

  return files;
}

然后使用

FutureBuilder
:

应用异步函数
FutureBuilder<List>(
  future: getDirList(),
  builder: (context, snapshot) {
    if (snapshot.hasData) {
      return Column(
        children: snapshot.data!
            .map((value) => Padding(
                  padding: const EdgeInsets.all(16),
                  child: Text('- $value'),
                ))
            .toList(),
      );
    } else if (snapshot.hasError) {
      return Center(child: Text('error: ${snapshot.error}'));
    }

    return const Center(child: CircularProgressIndicator());
  },
)

我使用

Column
来显示数据,如果你想以
ListView
Table

显示,你可以修改它

补充

如果您想检查您的文件夹是否正确(存在),您可以通过以下方式检查:

final bool isDirExist = await dir.exists();
print ('is directory exist $isDirExist');

如果存在则返回

true

© www.soinside.com 2019 - 2024. All rights reserved.