使用Dart在Windows中创建目录列表

时间:2018-05-25 05:37:59

标签: dart flutter

我正在尝试使用dart在Windows上创建目录列表,但是我收到错误

这是我的代码

I/flutter ( 7224): Directory: 'C:\'
E/flutter ( 7224): [ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception:
E/flutter ( 7224): FileSystemException: Directory listing failed, path = 'C:\/' (OS Error: No such file or directory, errno = 2)
E/flutter ( 7224): #0      _rootHandleUncaughtError.<anonymous closure> (dart:async/zone.dart:1114:29)
E/flutter ( 7224): #1      _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
E/flutter ( 7224): #2      _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)

顺便说一下,我使用android studio作为IDE。

我给了我这个错误。

d = {'A': [{'B': [{'C': [{'D1':'xyz'}, {'D2': []}]}]}]}
l = ['A','B','C','D1']
output = []
def find_path(dict_obj,key=0):
    for k,v in dict_obj.items():
        if k == l[key]:
            if key == len(l)-1:
                output.append(v)
                return
            if isinstance(v,dict):
                find_path(v, key+1)
            elif isinstance(v,list):
                for i,item in enumerate(v):
                    if isinstance(item,dict):
                        find_path(item,key+1)

find_path(d)
print(output[0] if output else None)

1 个答案:

答案 0 :(得分:1)

您的问题标记为flutter,但您似乎在询问纯Dart计划?

此代码

import 'dart:io';

void listerine(Directory pat) async {
  await for (var v in pat.list()) {
    print(v);
  }
}

main() {
  listerine(new Directory("C:\\"));
}

产生你在Windows上所期望的,即

Directory: 'C:\$Recycle.Bin'
Directory: 'C:\$WINDOWS.~BT'
Directory: 'C:\Apps'
...

Flutter使用Dart SDK的修改版本替换了移动呈现引擎(skia)的html支持。

大多数Dart代码都可以在两个版本中运行,但不是全部。这意味着您可以在Dart VM应用程序和Flutter应用程序中重用包 - 但不是全部。特别是,与浏览器或平台的交互仅在各自的版本中可用。

要与Windows文件系统交互,您需要Dart VM版本。 Download这个单独的。正如Günter所说,要在Flutter中与移动文件系统进行交互,请使用path_provider。