Android 颤振:如何调试在状态更改时重新呈现的小部件

Android 颤振:如何调试在状态更改时重新呈现的小部件,android,debugging,redux,dart,flutter,Android,Debugging,Redux,Dart,Flutter,我正在使用Redux和Flutter进行状态管理。每当我分派一个动作时,我都想知道哪些小部件被重新呈现。有什么方法可以做到这一点吗?在flatter中,每当一个小部件更新时;重新绘制整个小部件树。所以没有 但是,您也可以通过在树中插入repainboundary小部件来手动引入“重新绘制边界”。这明确地告诉flatter为它的子对象创建一个新的绘制层(这意味着内存缓存)。因此,每当该子对象更新时,它也不会重新绘制其父对象 您可以做的是在重新绘制边界时进行调试 为此,您可以通过以下方式启用重新绘制

我正在使用Redux和Flutter进行状态管理。每当我分派一个动作时,我都想知道哪些小部件被重新呈现。有什么方法可以做到这一点吗?

在flatter中,每当一个小部件更新时;重新绘制整个小部件树。所以没有

但是,您也可以通过在树中插入
repainboundary
小部件来手动引入“重新绘制边界”。这明确地告诉flatter为它的子对象创建一个新的绘制层(这意味着内存缓存)。因此,每当该子对象更新时,它也不会重新绘制其父对象

您可以做的是在重新绘制边界时进行调试

为此,您可以通过以下方式启用重新绘制彩虹:

  • 使用
    flatter run时按
    t
  • 使用vscode
    Dart code
    扩展名和
    ctrl/cmd+shift+p
    启用重新绘制彩虹

    • 调试应用程序以查看重新呈现的小部件的最佳方法是在代码中插入断点。我建议在
      小部件构建(BuildContext context)
      方法中设置断点


      或者,您也可以使用print语句来确保调用了build方法。

      关于渲染,首先要注意一点:重建和重新绘制是不同的。重建涉及布局和绘画,而重新绘画不涉及重新布置

      如何检查重建 在您感兴趣的任何
      build
      方法中添加
      print
      语句

      class MyApp extends StatelessWidget {
        @override
        Widget build(BuildContext context) {
          print('MyApp building');                 <-- this
          return MaterialApp(...
      
      正在重新绘制的区域具有彩虹边框,可在每次重新绘制时更改颜色。正如您在下面的动画中所看到的,每次都会重新绘制整个窗口。(中间的蓝线是小部件的一部分,而不是重绘彩虹。)

      如果要限制要绘制的内容,可以向树中添加RepaitBoundary小部件,如下所示:

      类MyApp扩展了无状态小部件{
      @凌驾
      小部件构建(构建上下文){
      打印(“MyApp大楼”);
      返回材料PP(
      家:脚手架(
      正文:中(
      子:容器(
      子项:重新绘制边界(//