在 Flutter / Dart 中调试时区分 class 的实例

Differentiating between instances of a class when debugging in Flutter / Dart

在 Flutter 中调试时,甚至只是将对象打印为字符串时,据我所知,无法区分对象的不同实例。仅查看第 9+ 行或调试器检查 f1f2f3 代表多少个 Foo 实例?

相比之下,在Java中,例如每个实例都打印有其地址并且很容易区分。即使我们在远离第 5-7 行的代码中进行调试,仍然很容易看出存在两个实例。

我可以在调试过程中使用 "evaluate expression" 手动检查相等性,但是如果引用在不同的范围内,这不能很好地扩展并且会很快复杂化。

还有其他更好的解决方案吗?

您在控制台中看到的是 toString() 方法。

您可以覆盖它来打印一些自定义信息。例如,大多数 flutter 小部件都会覆盖它以打印它们的参数。

可能的替代方法是添加哈希码:

@override
String toString() {
  return super.toString() + " " + hashCode;
}