在 Flutter / Dart 中调试时区分 class 的实例
Differentiating between instances of a class when debugging in Flutter / Dart
在 Flutter 中调试时,甚至只是将对象打印为字符串时,据我所知,无法区分对象的不同实例。仅查看第 9+ 行或调试器检查 f1
、f2
和 f3
代表多少个 Foo
实例?
相比之下,在Java中,例如每个实例都打印有其地址并且很容易区分。即使我们在远离第 5-7 行的代码中进行调试,仍然很容易看出存在两个实例。
我可以在调试过程中使用 "evaluate expression" 手动检查相等性,但是如果引用在不同的范围内,这不能很好地扩展并且会很快复杂化。
还有其他更好的解决方案吗?
您在控制台中看到的是 toString()
方法。
您可以覆盖它来打印一些自定义信息。例如,大多数 flutter 小部件都会覆盖它以打印它们的参数。
可能的替代方法是添加哈希码:
@override
String toString() {
return super.toString() + " " + hashCode;
}
在 Flutter 中调试时,甚至只是将对象打印为字符串时,据我所知,无法区分对象的不同实例。仅查看第 9+ 行或调试器检查 f1
、f2
和 f3
代表多少个 Foo
实例?
相比之下,在Java中,例如每个实例都打印有其地址并且很容易区分。即使我们在远离第 5-7 行的代码中进行调试,仍然很容易看出存在两个实例。
我可以在调试过程中使用 "evaluate expression" 手动检查相等性,但是如果引用在不同的范围内,这不能很好地扩展并且会很快复杂化。
还有其他更好的解决方案吗?
您在控制台中看到的是 toString()
方法。
您可以覆盖它来打印一些自定义信息。例如,大多数 flutter 小部件都会覆盖它以打印它们的参数。
可能的替代方法是添加哈希码:
@override
String toString() {
return super.toString() + " " + hashCode;
}