停用和处置之间的区别?

Mic*_*ono 13 widget stateful dart flutter

在 Flutter 中,StatefulWidget 具有dispose()deactivate()。它们有何不同?

Rém*_*let 19

dispose是确定的。deactivate不是。

deactivate当小部件可能被释放时调用。但这并不能保证。

deactivate调用但不调用的典型情况是dispose使用GlobalKey.

  • @BenButterworth [这是 deactivate 方法的链接](https://api.flutter.dev/flutter/widgets/State/deactivate.html) 和 [这是 dispose 方法](https://api.flutter. dev/flutter/widgets/State/dispose.html) (2认同)

Ben*_*rth 5

停用:

当对象从树中删除时调用。在某些情况下,框架会将 State 对象重新插入到树的另一部分(例如,如果包含此 State 对象的子树从树中的一个位置嫁接到另一个位置)。来源

处置:

当该对象从树中永久删除时调用。来源

通过理解这两个句子,您将看到,对于从树中暂时或永久删除的小部件,将调用 deactivate ,而仅对于永久删除的小部件,才会调用dispose 。

感谢安东尼奥·奥利维拉提供的链接,现在我明白了。