如何判断用户';s的主目录是,在Dart中?

如何判断用户';s的主目录是,在Dart中?,dart,Dart,我想在一个文件中存储一点信息,在命令行应用程序运行期间保存。最好的位置可能是用户主目录中的一个小文件 我想将property/config文件写入用户的主目录。对于Windows、Mac和Linux,我如何知道用户的主目录是什么?我正在使用Dart。我没有访问windows计算机的权限,但我在pub中发现了以下逻辑: if (Platform.environment.containsKey('PUB_CACHE')) { cacheDir = Platform.environment

我想在一个文件中存储一点信息,在命令行应用程序运行期间保存。最好的位置可能是用户主目录中的一个小文件


我想将property/config文件写入用户的主目录。对于Windows、Mac和Linux,我如何知道用户的主目录是什么?我正在使用Dart。

我没有访问windows计算机的权限,但我在pub中发现了以下逻辑:

  if (Platform.environment.containsKey('PUB_CACHE')) {
    cacheDir = Platform.environment['PUB_CACHE'];
  } else if (Platform.operatingSystem == 'windows') {
    var appData = Platform.environment['APPDATA'];
    cacheDir = path.join(appData, 'Pub', 'Cache');
  } else {
    cacheDir = '${Platform.environment['HOME']}/.pub-cache';
  }
对于Linux和Mac,我们可以执行以下操作:

Platform.environment['HOME']


对于Windows,最好在
平台内找到一个位置。环境['APPDATA']

识别操作系统,然后为该特定操作系统使用指定的环境变量。您可以从中读取OS/环境变量。例如:

  • OS:String OS=Platform.operatingSystem给出了各种检查,如
    isLinux
    isAndroid
  • Map envVars=Platform.environment
  • 例如:

    import 'dart:io' show Platform, stdout;
    
    void main() {
      String os = Platform.operatingSystem;
      String home = "";
      Map<String, String> envVars = Platform.environment;
      if (Platform.isMacOS) {
        home = envVars['HOME'];
      } else if (Platform.isLinux) {
        home = envVars['HOME'];
      } else if (Platform.isWindows) {
        home = envVars['UserProfile'];
      }
      stdout.writeln(home);
    }
    
    导入“dart:io”显示平台,标准输出;
    void main(){
    字符串os=Platform.operatingSystem;
    字符串home=“”;
    Map envVars=Platform.environment;
    if(平台isMacOS){
    home=环境变量['home'];
    }else if(Platform.isLinux){
    home=环境变量['home'];
    }else if(Platform.isWindows){
    home=envVars['UserProfile'];
    }
    标准写入(主页);
    }
    
    从这里获取的主目录:

    这样可以:

    String get userHome =>
        Platform.environment['HOME'] ?? Platform.environment['USERPROFILE'];
    

    与其他答案类似:

    //获取主目录,如果未知,则获取null。
    字符串homeditory(){
    交换机(平台操作系统){
    “linux”案例:
    案例“macos”:
    返回平台.环境['HOME'];
    “窗口”案例:
    return Platform.environment['USERPROFILE'];
    “安卓”案例:
    //可能需要内部存储。
    返回'/storage/sdcard0';
    案例“ios”:
    //iOS实际上没有主目录。
    返回null;
    “紫红色”案例:
    //我不知道。
    返回null;
    违约:
    返回null;
    }
    }
    

    您可以根据需要调整其行为方式。我确实试着找出了Fuchsia的答案,但老实说,我不知道它是否有主目录

    AppData
    是用于在Windows上存储用户数据的几个“特殊文件夹”之一。回顾它们并选择最适合您需要的一个是很好的-