我已经问过很多问题,询问为什么不必要地重建一个小部件,但是我正在寻找一种方法来了解是什么触发了它们。
因此,我在视图小部件上放置了一个断点,然后得到了一个相当大的堆栈(裁剪了-放大了5倍):
我们应该如何跟踪该死的重建起源?
答案 0 :(得分:1)
在 https://pub.dev/packages/debug_tools 有一个名为 debug_tools
的新包。该软件包包含一个 BuildTracker
,可用于找出导致重建的原因。
示例运行:
ValueListenableBuilder<String> ← [root]
Directionality ← ValueListenableBuilder<String> ← [root]
Text ← Directionality ← ValueListenableBuilder<String> ← [root]
State.setState package:flutter/src/widgets/framework.dart 1287:15
_ValueListenableBuilderState._valueChanged package:flutter/src/widgets/value_listenable_builder.dart 182:5
ChangeNotifier.notifyListeners package:flutter/src/foundation/change_notifier.dart 243:25
ValueNotifier.value= package:flutter/src/foundation/change_notifier.dart 309:5
* main.<fn> test/build_tracker_test.dart 25:10
...