Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 为什么对所有具有路由参数的小部件,甚至是不可见的小部件,都调用on-navigation构建方法?_Flutter_Navigation - Fatal编程技术网

Flutter 为什么对所有具有路由参数的小部件,甚至是不可见的小部件,都调用on-navigation构建方法?

Flutter 为什么对所有具有路由参数的小部件,甚至是不可见的小部件,都调用on-navigation构建方法?,flutter,navigation,Flutter,Navigation,假设有一个小部件通过调用ModalRoute.of(context.settings.arguments在其构建方法中提取导航器参数 当我导航到它时,它的构建方法被调用,这是正常的。但我注意到,当我从这个小部件弹出时,它的构建方法被调用 更重要的是,当存在一个小部件链,相互传递路由参数时,当通过push或pop在它们之间导航时,所有小部件的构建方法都会启动,即使它们不可见 这是故意的吗?这种行为的原因是什么?对我来说,它目前会导致额外的数据库访问。是的,这是出于设计——您无法避免that@psk

假设有一个小部件通过调用
ModalRoute.of(context.settings.arguments
在其构建方法中提取导航器参数

当我导航到它时,它的构建方法被调用,这是正常的。但我注意到,当我从这个小部件弹出时,它的构建方法被调用

更重要的是,当存在一个小部件链,相互传递路由参数时,当通过push或pop在它们之间导航时,所有小部件的构建方法都会启动,即使它们不可见


这是故意的吗?这种行为的原因是什么?对我来说,它目前会导致额外的数据库访问。

是的,这是出于设计——您无法避免that@pskink这种设计有什么原因吗?如果它是隐藏的,为什么它必须是最新的?此外,这种情况不仅发生在家长身上,也不仅仅发生在弹出屏幕上。导航时涉及整个层次结构。您的
构建
方法必须设计为没有副作用-基本上
构建
方法可以被框架多次调用,如果您真的想知道发生这种情况的详细原因,您必须为此做好准备
OverlyState
类源代码,它们是导航内容的工作马,