将字符串添加到列表时的奇怪行为

时间:2019-12-26 15:18:20

标签: flutter dart

从外部存储设备加载资产​​时,我会遇到这种奇怪的行为,有时路径会添加到列表中,而大多数情况下不会添加路径。

这是我的职能,我想念什么吗?

Future<List<String>> loadAssets() async {
    List<String> loadedAssets = [];
    loadedAssets.add('test');
    try {
      final Directory dir = await syspath.getExternalStorageDirectory();
      dummyData.forEach((path) async {
        final extPath =
            path.substring(('assets/products_dummy_data/'.length));
            final localPath='${dir.path}/$extPath}';
        final file = File(localPath);
        if (await file.exists()) {
          await file.delete();
        }
        final data = await rootBundle.load(path);
        var asUint8List =
            data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
        await file.create(
          recursive: true,
        );
        await file.writeAsBytes(asUint8List);
        if (await file.exists()) {
          loadedAssets.add(localPath);
        }

      });

    } catch (e, s) {
      AppHelper.appLogger.e('Error while loading assets', e, s);
    }
    AppHelper.appLogger.i('loadedAssets.length ${loadedAssets.length}');
    return loadedAssets;
  }

但是对于添加的测试元素,我总是将长度设为1

1 个答案:

答案 0 :(得分:0)

使用await Future.forEach

后已解决的问题