2017-06-29 93 views
4

我有一个文本文件(.txt),我想成为一种资产,我可以稍后进行扫描。Flutter - 从资产中读取文本文件

在pubspec.yaml,我确信:

flutter: assets: - res/my_file.txt

存在。该文件驻留在我所做的res /文件夹,在lib/android /和ios/

相同的水平我正在尝试从自定义类中读取文件,而不是小部件。

根据该文件,我用这个导入:

import 'package:flutter/services.dart' show rootBundle;

,并开始阅读,像这样:

/// Assumes the given path is a text-file-asset. Future<String> getFileData(String path) async { return await rootBundle.loadString(path); }

而获得的实际数据,这样做:

String data = await getFileData(fileName);

但是,当我使用fileName(如'assets/res/my_file.txt')时,出现错误:Unable to load asset: assets/res/my_file.txt

还值得一提的是,我试图从单元测试中做到这一点。任何想法如何正确地做到这一点?谢谢!

+1

当你不在单元测试中时它能正常工作吗? –

+0

没有。我在一个基本的应用程序测试,没有工作。 – Jellio

+0

值得注意的是,在没有进行单元测试之后,我确实得到了它的工作,但仍然无法在单元测试中取得成功。我会一直'无法加载资产'。 – Jellio

回答

4

文件夹名称“资产”不会神奇地添加。更新您的pubspec.yaml以包含资产的完整路径。

flutter: 
    assets: 
    - assets/res/my_file.txt 
+0

谢谢。我的文件夹需要是'assets/res/my_file.txt',我的pubspec.yaml需要'assets/res/my_file.txt',我的路径需要是'assets/res/my_file.txt'。 – Jellio