【发布时间】:2022-11-28 19:08:00
【问题描述】:
我想打印这个类的文件路径,这样我就可以很快找到这个类。
就像有时系统做的那样:
我可以单击这个蓝色链接并跳转到它的类。
我在课堂上可以做什么?
这种方法像:
printPath(this.runtimeType);
【问题讨论】:
我想打印这个类的文件路径,这样我就可以很快找到这个类。
就像有时系统做的那样:
我可以单击这个蓝色链接并跳转到它的类。
我在课堂上可以做什么?
这种方法像:
printPath(this.runtimeType);
【问题讨论】:
编辑:这不是你问题的答案,但它可以帮助你找到你的实现。实际上,您应该使用 IDE 来定位您的类。
那是堆栈跟踪。您可以通过抛出错误来获取堆栈跟踪。 只需将 try-catch 子句放在代码中的任何位置,如下所示:
try {
throw Error();
} catch (e, stackTrace) {
print(stackTrace);
}
您可以通过编写扩展名来改进它:
extension StackTracer on Object {
StackTrace get stackTrace {
try {
throw Error();
} catch (e, stackTrace) {
return stackTrace;
}
}
}
您可以通过导入扩展来获取它,然后像这样打印它:
import 'package:flutter/material.dart';
import 'path_to_your_extension.dart'; // path to your extension
class CrashButton extends StatelessWidget {
const CrashButton({super.key});
@override
Widget build(BuildContext context) {
print(stackTrace);
return Text('Widget');
}
}
但在这种情况下,您将获得扩展的路径作为第一条路径
【讨论】:
添加这个包:
stack_trace: ^1.11.0
例子:
import 'dart:async';
void main() {
_scheduleAsync();
}
void _scheduleAsync() {
Future.delayed(Duration(seconds: 1)).then((_) => _runAsync());
}
void _runAsync() {
throw 'oh no!';
}
Unhandled exception:
oh no!
#0 _runAsync (file:///Users/kevmoo/github/stack_trace/example/example.dart:12:3)
#1 _scheduleAsync.<anonymous closure> (file:///Users/kevmoo/github/stack_trace/example/example.dart:8:52)
<asynchronous suspension>
【讨论】: