Debugging 在颤振/省道中调试时区分类的实例

Debugging 在颤振/省道中调试时区分类的实例,debugging,dart,flutter,instance,Debugging,Dart,Flutter,Instance,在颤振中调试时,甚至只是将对象打印为字符串时,我意识到无法区分对象的不同实例。只看第9行+或调试器检查Foodof1、f2和f3代表多少实例 相比之下,例如在Java中,每个实例都打印有其地址,并且很容易区分。即使我们在一些远离第5-7行的代码中进行调试,也很容易看出存在两个实例 我可以在调试过程中使用“evaluate expression”手动检查相等性,但如果引用位于不同的范围内,这并不能很好地扩展,并且会很快变得复杂 还有其他更好的解决方案吗?您在控制台中看到的是toString()

在颤振中调试时,甚至只是将对象打印为字符串时,我意识到无法区分对象的不同实例。只看第9行+或调试器检查
Foo
do
f1
f2
f3
代表多少实例

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

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


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

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

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

一种可能的覆盖方式是添加哈希代码:

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

非常感谢。这很有帮助。但是,hashCode被覆盖的情况如何(例如值对象)?在运行时,这些对象实际上是相同的,但在调试时区分它们很重要。