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

Hug*_*o H 9 dart flutter flutter-provider

我见过很多关于为什么一个小部件不必要地重建的问题,但我正在寻找一种方法来理解触发它们的原因。

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

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

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

use*_*643 1

有一个名为debug_toolshttps://pub.dev/packages/debug_tools 的包。该软件包包含一个BuildTracker可以找出导致重建的原因的工具。

\n

运行示例:

\n

构建的小部件

\n
    \n
  • ValueListenableBuilder<String> \xe2\x86\x90 [root]
  • \n
  • Directionality \xe2\x86\x90 ValueListenableBuilder<String> \xe2\x86\x90 [root]
  • \n
  • Text \xe2\x86\x90 Directionality \xe2\x86\x90 ValueListenableBuilder<String> \xe2\x86\x90 [root]
  • \n
\n

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

\n

ValueListenableBuilder \xe2\x86\x90 [根]:

\n
  State.setState                           package:flutter/src/widgets/framework.dart 1287:15\n  _ValueListenableBuilderState._valueChanged package:flutter/src/widgets/value_listenable_builder.dart 182:5\n  ChangeNotifier.notifyListeners           package:flutter/src/foundation/change_notifier.dart 243:25\n  ValueNotifier.value=                     package:flutter/src/foundation/change_notifier.dart 309:5\n* main.<fn>                                test/build_tracker_test.dart 25:10\n...\n
Run Code Online (Sandbox Code Playgroud)\n