首页 > 解决方案 > Flutter如何在资产文件夹中指定文件路径

问题描述

我在资产文件夹中有一个声音文件,我可以使用如下代码检查它是否存在:

    if (FileSystemEntity.typeSync(
        '/Users/admin/Library/Developer/CoreSimulator/Devices/AC8BED2E-4EF1-4777-A399-EBD52E38B5C7/data/Containers/Data/Application/1390EE2C-A5D8-46E0-A414-AAC2B83CD20C/Library/Caches/sounds/3/unbeaten.m4a') !=
    FileSystemEntityType.notFound) {
  print('file is found');
} else {
  print('not found');
}

如您所见,我需要使用绝对路径。有没有办法使用类似“assets/sounds/3/unbeaten.m4a”的路径检查文件是否在资产文件夹中,而无需指定整个路径?

标签: flutter

解决方案


正如@frank06 所提到的,通过使用path_provider,我可以使用以下代码检查文件是否在资产文件夹中。但这仅适用于 iOS,我仍在尝试为 Android 寻找解决方案。注意需要为 iOS 添加 /Library 和 /Caches。对于Android,我似乎看不到与iOS不同的路径。

如果有人可以为我提供一些有关 Android 的信息,我将不胜感激。appDir 在 Android 上看起来像这样 - /data/user/0/com.learnchn.alsospeak/app_flutter/

directory = await getApplicationDocumentsDirectory();
var parent = directory.parent;

var directoryPath = directory.path;
var parentPath = parent.path;

String testString = 'sounds/3/unbeaten.m4a';

parentPath = parentPath + '/Library' '/Caches/' '$testString';

推荐阅读