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

Flutter 如何在本地存储/外部颤振中创建文件夹?,flutter,dart,flutter-dependencies,Flutter,Dart,Flutter Dependencies,这就是我尝试过的,当然我设置了写入存储的权限,但是这段代码在这个路径上创建了一个目录/storage/emulated/0/Android/data/com.example.test\u app/files/some\u name 我需要的是在这个路径上创建/storage/emulated/0/some_name知道我做错了什么,或者它们是另一种方法吗???根据插件代码,getExternalStorageDirectory()函数采用StorageDirectory类型的可选参数。您可以尝试

这就是我尝试过的,当然我设置了写入存储的权限,但是这段代码在这个路径上创建了一个目录
/storage/emulated/0/Android/data/com.example.test\u app/files/some\u name

我需要的是在这个路径上创建
/storage/emulated/0/some_name
知道我做错了什么,或者它们是另一种方法吗???

根据插件代码,
getExternalStorageDirectory()
函数采用StorageDirectory类型的可选参数。您可以尝试提供类型参数。 可用类型包括:

   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();
    }
有关更多详细信息,请参阅 如果您的问题仍未解决,您可以向插件作者提出请求


希望有帮助。

如果您想在
/storage/simulated/0
中创建目录,请尝试此操作

enum StorageDirectory {
  /// Contains audio files that should be treated as music.
  ///
  /// See https://developer.android.com/reference/android/os/Environment.html#DIRECTORY_MUSIC.
  music,

  /// Contains audio files that should be treated as podcasts.
  ///
  /// See https://developer.android.com/reference/android/os/Environment.html#DIRECTORY_PODCASTS.
  podcasts,

  /// Contains audio files that should be treated as ringtones.
  ///
  /// See https://developer.android.com/reference/android/os/Environment.html#DIRECTORY_RINGTONES.
  ringtones,

  /// Contains audio files that should be treated as alarm sounds.
  ///
  /// See https://developer.android.com/reference/android/os/Environment.html#DIRECTORY_ALARMS.
  alarms,

  /// Contains audio files that should be treated as notification sounds.
  ///
  /// See https://developer.android.com/reference/android/os/Environment.html#DIRECTORY_NOTIFICATIONS.
  notifications,

  /// Contains images. See https://developer.android.com/reference/android/os/Environment.html#DIRECTORY_PICTURES.
  pictures,

  /// Contains movies. See https://developer.android.com/reference/android/os/Environment.html#DIRECTORY_MOVIES.
  movies,

  /// Contains files of any type that have been downloaded by the user.
  ///
  /// See https://developer.android.com/reference/android/os/Environment.html#DIRECTORY_DOWNLOADS.
  downloads,

  /// Used to hold both pictures and videos when the device filesystem is
  /// treated like a camera's.
  ///
  /// See https://developer.android.com/reference/android/os/Environment.html#DIRECTORY_DCIM.
  dcim,

  /// Holds user-created documents. See https://developer.android.com/reference/android/os/Environment.html#DIRECTORY_DOCUMENTS.
  documents,
}
}

对我来说这很有效

但是首先在Android清单中设置权限

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();
}

Future createFolder(字符串)异步{
最终folderName=cow;
最终路径=目录(“存储/模拟/0/$folderName”);
var status=等待权限.storage.status;
如果(!status.isgrated){
等待权限.storage.request();
}
if((等待路径exists())){
返回路径.path;
}否则{
path.create();
返回路径.path;
}
}

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

谢谢,但它们都没有提供我需要的路径。我测试了它,我会在插件的repo上看到它们是否是解决方案。除非应用程序具有存储权限,否则这将无法工作。请参阅此答案,其中还包括权限请求,当我连接到计算机时,无法在手机中看到创建的“$folderName”文件夹。是的,通过usb电缆将手机连接到计算机。请建议。
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
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;
  }
}