Flutter 如何从外部存储中获取文件?

Kan*_*mal 4 android ios dart flutter

我想使用flutter项目获取listview中的所有文件,但如何访问外部文件夹。

我创建了一个名为“MyFile”的文件夹,它是在“/storage/emulated/0/MyFile”中创建的,

但下面的代码指向“/storage/emulated/0/Android/data/com.example.demo/MyFile”。

我不知道为什么下面的代码不起作用

 Directory externalDirectory = await getExternalStorageDirectory();
 print('External Storage:$externalDirectory');
 // External storage: /storage/emulated/0/Android/data/com.example.demo/MyFile
Run Code Online (Sandbox Code Playgroud)

Uma*_*afa 9

在使用 Flutter 官方的path_provider包时,getExternalStorageDirectory() 将始终返回 /storage/emulated/0/ your-package-name /files 的路径。

要获取/storage/emulated/0/,您可以使用第三方包ext_storage。下面的代码将返回您想要的目录路径

 var externalDirectoryPath = await ExtStorage.getExternalStorageDirectory();
 print(path);  // /storage/emulated/0
Run Code Online (Sandbox Code Playgroud)

现在要创建一个文件夹,您可以使用以下功能:

//this will create a Folder in the storage/emulated/0
new Directory(externalDirectoryPath +'/YourfolderName')
  .create()
  .then((Directory directory) 
  {
    print(directory.path);
  });;
Run Code Online (Sandbox Code Playgroud)

'

  • 插件“ext_storage”使用已弃用的 Android 嵌入版本。为了避免意外的运行时失败或将来的构建失败,请尝试查看此插件是否支持 Android V2 嵌入。否则,请考虑删除它,因为 Flutter 的未来版本将删除这些已弃用的 API。 (2认同)