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

时间:2018-01-17 23:14:58

标签: flutter

执行导航代码时,下面的类with toupdate as ( select t.*, row_number() over (order by (select null)) as seqnum from dbo.table t ) update toupdate set idpep = 'IDP' + RIGHT('000000' + CAST(seqnum + 1 AS VARCHAR(6)), 6); 中的build函数会被调用两次。 TestWidget在控制台上打印两次 有谁知道为什么会这样?

Test Widget

导航代码:

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

路线定义:

   Navigator.of(context).pushNamed(AppRoutes.fieldData);`

1 个答案:

答案 0 :(得分:1)

这是因为动画而发生的。

当在页面中拖动路线时,构建内容以使渲染的面部被动画化,然后,当它到达原位时,它将再次重建。

您可以清楚地看到它在您的构建函数中放置调试中断并尝试导航到这样的路径:它将在路径即将进入时首先停止 - 但仍然不可见 - ;然后当它结束时。