谁能告诉我如何在小部件测试期间实现覆盖 flutter 错误,以便我可以检查自己的自定义错误。
我在网上看到片段提到了这一点,但我所有的实现都失败了
void main() {
testWidgets('throws an error when scanning unknown term types', (WidgetTester tester) async {
await tester.pumpWidget(injectTestWidget(new ItemScanScreen()));
await tester.enterText(find.byKey(new Key('term')), '');
await tester.tap(find.byIcon(Icons.send));
await tester.pump();
expect(
tester.takeException(),
isInstanceOf<UnrecognizedTermException>(),
reason: 'should have thrown an UnrecognizedTermException error but didn\'t',
);
});
}
上面的代码失败并显示下面的消息,即使它看起来实际上“捕获”了我的错误:
The following UnrecognizedTermException was thrown running a test:
Instance of 'UnrecognizedTermException'
...
我读到您可以执行以下代码段之类的操作,但它没有看到如何/在何处实现它:
final errorHandled = expectAsync0((){});
FlutterError.onError = (errorDetails) {
// handle error
errorHandled();
});
最佳答案
我在生产环境中使用以下代码将错误记录到服务器。
main.dart:
import 'dart:async';
import 'package:flutter/material.dart';
import 'logging.dart';
void main() async {
FlutterError.onError = (FlutterErrorDetails details) async {
new ErrorLogger().logError(details);
};
runZoned<Future<void>>(() async {
// Your App Here
runApp(MainApp());
}, onError: (error, stackTrace) {
new ErrorLogger().log(error, stackTrace);
});
}
logging.dart:
class ErrorLogger {
void logError(FlutterErrorDetails details) async {
//FlutterError.dumpErrorToConsole(details);
_sendToServer(details.exceptionAsString(), details.stack.toString());
}
void log(Object data, StackTrace stackTrace) async {
// print(data);
// print(stackTrace);
_sendToServer(data.toString(), stackTrace.toString());
}
void _sendToServer(String a, String b) async {
// Implementation here
}
}
https://stackoverflow.com/questions/54294656/
相关文章:
flutter - Flutter 支持虚拟现实还是增强现实?
text - 如何使用 Flutter 编写带有要点的段落?
flutter - 如何从 TextField 中删除内容填充?
dart - 在 RichText 小部件中向 TextSpan 背景添加额外的填充
dart - Flutter 不会使用不同的参数重建相同的小部件
android - 如何禁用使用 Flutter 1.0 在 Google map 中点击标记时出现
flutter - 从网络加载图像时如何修复 Listview 滚动卡顿