flutter - Flutter 如何从一个 List 中的 assets 文件夹中获取所有文件
问题描述
我在 assets 文件夹中有一堆 xml 文件,我添加了 pubspec.yaml 的路径,路径看起来像这样 'assets/data/somename.xml' 我需要从它们那里获取数据,这就是我现在得到它的方式
List filePathList = ['assets/data/widow.xml','assets/data/door.xml'];
for(int i = 0;i<filePathList.length;i++){
var xmlFile = XmlDocument.parse(await rootBundle.loadString(filePathList[i]));
checkListtemplateXmlList.add(xmlFile);
}
你怎么能看到我使用非常糟糕的方式从文件中获取数据,将来会有更多的 xml 文件,所以我需要一些解决方案来解决这个问题,以便不在资产文件夹中的每个文件的 filePathList 中添加路径。我还做了一个 loadData 函数来加载我想要的所有文件,但是我的 json 文件位于我使用 getApplicationDocumentDirectory 类获得的目录中。有一个代码
static Future<void> loadData() async {
final dir = await getApplicationDocumentsDirectory();
List<FileSystemEntity> files = await dir.list().toList();
for (int i = 0; i < files.length; i++) {
String filepath = files[i].path;
File newFile = File(filepath);
String name = p.basenameWithoutExtension(newFile.path);
String myExtension = p.extension(filepath);
if(myExtension != '.json'){
} else{
checkLists.add(CheckList(name));
}
}
for(int i = 0;i< checkLists.length;i++){
await checkLists[i].readFile();
}
}
我怎么能在我的 getXmlData 函数中做这样的事情
解决方案
在 pubspec 中只定义文件夹:
assets:
- assets/data/
这将“加载”文件data
夹内的所有文件。
并使用此代码:
// This will give a list of all files inside the `assets`.
var assets = await rootBundle.loadString('AssetManifest.json');
并使用过滤器获取所有xml
文件。
Map json = json.decode(assets);
List get = json.keys.where((element) => element.endsWith(".xml")).toList();
推荐阅读
- java - Spring Websocket、RabbitMQ 和 STOMP 的性能问题
- python - 熊猫数据框
- angular - Angular - 从本地目录获取文件列表
- opencv - 如何使用opencv在图像中找到近似三角形
- c# - 将多种序列化格式存储在一个文件中?AKA 避免集合的序列化膨胀
- vba - VBA - 页脚修改 - 取消链接到上一个
- python-3.x - 在 Python 中动态加载模块
- python - Python:将小于(<)运算符与“and”关键字结合使用?
- html - 隐藏元素引导程序 4.1
- iis - 无法启动 Windows 进程激活服务。错误 2