如何在本地存储/外部 Flutter 中创建文件夹?

elm*_*i16 5 dart flutter flutter-dependencies

   import 'package:path_provider/path_provider.dart';
   import 'dart:io';
   void createAppFolder() async {
       final directory = await getExternalStorageDirectory();
       final dirPath = '${directory.path}/some_name' ;
       await new Directory(dirPath).create();
    }
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的当然我设置了写入存储的权限但是这段代码在这个路径上创建了一个目录 /storage/emulated/0/Android/data/com.example.test_app/files/some_name 我需要在这个路径上创建/storage/emulated/0/some_name任何想法我做错了什么或者他们是另一种方式来做到这一点??

小智 6

如果你想创建目录/storage/emulated/0试试这个。

import 'dart:io';
 _createFolder()async{
final folderName="some_name";
final path= Directory("storage/emulated/0/$folderName");
if ((await path.exists())){
  // TODO:
  print("exist");
}else{
  // TODO:
  print("not exist");
  path.create();
}
Run Code Online (Sandbox Code Playgroud)

}

  • 除非应用程序具有存储权限,否则这将不起作用。请参阅此答案,其中还包括权限请求/sf/answers/4485312191/ (2认同)

Z-X*_*-KH 5

对我来说这个作品
permission_handler

但首先在你的 Android Manifest 中设置权限

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
Future<String> createFolder(String cow) async {
  final folderName = cow;
  final path = Directory("storage/emulated/0/$folderName");
  var status = await Permission.storage.status;
  if (!status.isGranted) {
    await Permission.storage.request();
  }
  if ((await path.exists())) {
    return path.path;
  } else {
    path.create();
    return path.path;
  }
}

Run Code Online (Sandbox Code Playgroud)

另请注意:如果您命名createFolder(".folder")该文件夹将被隐藏。