Flutter 为什么单击TextFormField会触发didUpdateWidget()?

Flutter 为什么单击TextFormField会触发didUpdateWidget()?,flutter,Flutter,我遇到了一个问题。在我的页面的一个部分,我有一个日期和今天的日期。如果用户单击右边的箭头,它将前进一个日期;如果用户单击左边的箭头,它将后退一个日期。在箭头按钮上,我使用的是setState。日期变化得很好 我还有一张单独的卡片上的表格。对于每个textFormField,我都设置了一个控制器。我必须设置这些,因为initialvalue:只被调用一次,所以字段永远不会随着日期而改变 不管怎样,字段现在随着日期而改变,并且是正确的。但是,当我点击表单时,最上面的widget日期又回到了它的初始值

我遇到了一个问题。在我的页面的一个部分,我有一个日期和今天的日期。如果用户单击右边的箭头,它将前进一个日期;如果用户单击左边的箭头,它将后退一个日期。在箭头按钮上,我使用的是setState。日期变化得很好

我还有一张单独的卡片上的表格。对于每个textFormField,我都设置了一个控制器。我必须设置这些,因为initialvalue:只被调用一次,所以字段永远不会随着日期而改变

不管怎样,字段现在随着日期而改变,并且是正确的。但是,当我点击表单时,最上面的widget日期又回到了它的初始值

我通过设置一个didUpdateWidget覆盖来检查这一点,并且每次单击表单字段时都会触发它???为什么会发生这种情况。我还没有更新任何东西

当我为两个箭头之间显示的日期值使用控制器时,它不会改变,但当我点击submit时,应该分配给它的值是错误的第一个出现的日期。因此,当diddupdate触发时,似乎是在设置我在extends StatefulWidget类{}中设置的字段

编辑:哇,键入最后一句话让我意识到我需要在扩展状态的底层类中设置值。我在widget.activeDay中使用它


我想我仍然很好奇为什么文本表单字段会出现这种情况?

单击文本字段会打开键盘

这会改变屏幕尺寸,并导致MaterialApp重建路线

路由重建最终在该特定小部件上调用didUpdateWidget