5

我已经看到很多关于为什么一个小部件不必要地重建的问题,但我正在寻找一种方法来理解是什么触发了它们。

所以我在视图小部件上放了一个断点,我得到了一个相当大的堆栈(裁剪 - 它大 5 倍):

多次重建视图小部件上的断点

我们应该如何追踪该死的重建起源?

4

1 回答 1

1

有一个名为https://pub.dev/packages/debug_toolsdebug_tools的新包。该软件包包括一个允许找出导致重建的原因。BuildTracker

示例运行:

构建的小部件

  • ValueListenableBuilder<String> ← [root]
  • Directionality ← ValueListenableBuilder<String> ← [root]
  • Text ← Directionality ← ValueListenableBuilder<String> ← [root]

被标记为脏的小部件(构建根)

ValueListenableBuilder ← [根]:

  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
...
于 2021-04-23T13:59:12.810 回答