如何知道是什么触发了我的Flutter小部件重建

时间:2019-09-06 05:30:42

标签: flutter dart flutter-provider

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

因此,我在视图小部件上放置了一个断点,然后得到了一个相当大的堆栈(裁剪了-放大了5倍):

breakpoint on a view widget rebuilding multiple times

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

1 个答案:

答案 0 :(得分:1)

https://pub.dev/packages/debug_tools 有一个名为 debug_tools 的新包。该软件包包含一个 BuildTracker,可用于找出导致重建的原因。

示例运行:

构建的小部件

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

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

ValueListenableBuilder ← [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
...