为什么在 flutter 中调用 Navigator.of(context).pushNamed(..) 时小部件会构建两次?

gre*_*nes 8 flutter

build执行导航代码时,下面类中的函数会TestWidget被调用两次。Test Widget在控制台上打印两次。
有谁知道为什么会这样?

 class TestWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    print("Test Widget");
    return new Scaffold(body: new Text("TEST WIDGET"),);
  }
}
Run Code Online (Sandbox Code Playgroud)

导航代码:

   Navigator.of(context).pushNamed(AppRoutes.fieldData);`
Run Code Online (Sandbox Code Playgroud)

路线定义:

  AppRoutes.fieldData: (context) {
           return new TestWidget(); 
  },
Run Code Online (Sandbox Code Playgroud)

Fab*_*ese 5

发生这种情况是因为动画。

当在页面内容中拖动路线时,会构建渲染的脸部以进行动画处理,然后,当它就位时,会再次重新构建。

您可以清楚地看到它在构建函数中放置了一个调试中断,并尝试导航到这样的路线:当路线即将进入但仍然不可见时,它将首先停止;然后当它安顿下来时。

  • 有没有办法防止它运行两次? (5认同)