文件可以从相对于省道脚本文件的目录中读取,简单地称为var file=new File('。/夹具/contacts.json')
。
但是,在IDE中运行的颤振测试无法读取该文件。
加载为资源(不是,因为我不想在应用程序中捆绑测试数据文件)在测试中也不起作用。
在flatter中读取文件的好方法是什么(对于命令行测试和IDE测试)?
运行颤振测试
非常快。然而,IntellijIDE内部的测试速度非常慢,但它可以设置调试断点并单步执行和查看变量。所以这两种测试都非常有用。
我创建了一个util,因为vscode和命令行测试基路径不同
https://github.com/terryx/flutter-muscle/blob/master/github_provider/test/utils/test_path.dart
这就是我使用它的方式
https://github.com/terryx/flutter-muscle/blob/master/github_provider/test/services/github_test.dart#L13
另一种方法是在命令行中指定准确的测试路径
$ flutter test test
我今天遇到了同样的问题。我的测试在IDE(Android Studio)中通过,但在CI上失败。我发现IDE需要一个非相对路径,但是flattertest
需要一个相对路径。我认为这是一个错误,我将寻找正确的地方报告它。然而,在此期间,我发现了一个粗糙的工作。基本上,我有一个函数,它尝试两种方法来指定文件路径。。
import 'dart:convert';
import 'dart:io';
Future<Map<String, dynamic>> parseRawSample(String filePath,
[bool relative = true]) async {
filePath = relative ? "test_data/src/samples/raw/$filePath" : filePath;
String jsonString;
try {
jsonString = await File(filePath).readAsString();
} catch (e) {
jsonString = await File("../" + filePath).readAsString();
}
return json.decode(jsonString);
}
大部分代码都是针对我的情况编写的,但我认为其他人可能会根据自己的目的修改这项工作。
刚刚试了一下,比你想象的要容易。
首先,创建一个与测试所在目录相同的文件夹。例如,我创建了一个名为test_resources的文件夹。
然后,假设我们有以下JSON文件用于测试目的。
测试资源/联系人。json
{
"contacts": [
{
"id": 1,
"name": "Seth Ladd"
},
{
"id": 2,
"name": "Eric Seidel"
}
]
}
测试/加载\u文件\u测试。飞奔
我们可以将其用于我们的测试,如下所示:
import 'dart:convert';
import 'dart:io';
import 'package:flutter_test/flutter_test.dart';
void main() {
test('Load a file', () async {
final file = new File('test_resources/contacts.json');
final json = jsonDecode(await file.readAsString());
final contacts = json['contacts'];
final seth = contacts.first;
expect(seth['id'], 1);
expect(seth['name'], 'Seth Ladd');
final eric = contacts.last;
expect(eric['id'], 2);
expect(eric['name'], 'Eric Seidel');
});
}
目前我正在尝试颤振网页,我需要在颤振主频道工作。但是,后来我需要继续我的其他项目。在他们身上,我正在研究颤振稳定通道。 但是,每当我使用命令“flutter channel stable”或“fluter channel master”切换我的flutter通道时,它每次都会重新下载sdk和其他工具。 目前,我已经下载了稳定的颤振sdk和稳定的dart sdk。 我已将它们移动到“FlutterS
我读过https://flutter.dev/docs/development/ui/assets-and-images#asset-包依赖项中的图像和从资产中读取的文本文件,并应用了所有这些,但我的代码仍然无法工作。。。。 我为此打开了一个新项目,在主文件夹中创建了资产和文件: 然后,不信任Android Studio,我检查了vi,在pubspec.yaml一切都好: 该文件以以下内容结尾:
Xcode的输出:在文件中包含从 /Users/dani/development/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.0.3/ios/Classes/FLTURLLauncherPlugin.m: 7: /Users/dani/development/flutter/.pub-cache/hosted/pub.dart
每当我尝试使用AdMob加载广告时,我都会得到以下错误
我可以从flutter应用程序的assets/Images目录加载图像,但当从flutter包的assets/Images目录加载相同的图像时,我会得到以下错误:
试图在flutter中加载图像,但无法做到这一点,得到以下错误 I/Flutter(3214):IMAGE RESOURCE SERVICE捕获的异常(3214):引发以下断言解析图像编解码器:I/Flutter(3214):无法加载资产:资产/test.jpg I/Flutter(3214):I/Flutter(3214):引发异常时,这是堆栈:I/Flutter(3214):#0 Platfo