我遇到了一个问题。在页面的一部分中,我有一个日期和今天的日期。如果用户单击右侧的箭头,则前进一个日期;如果用户单击左侧的箭头,则后退一个日期。在箭头按钮上,我正在使用setState。日期改变得很好。
我在另一张卡片上也有一张表格。对于每个textFormField,我都有一个控制器设置。我必须进行设置,因为initialvalue:仅被调用一次,因此字段永远不会随着日期而变化。
无论如何,这些字段现在都随着日期而变化,并且它是正确的。但是,当我单击表单的那一刻,顶部小部件的日期又回到了原来的初始值?
我通过设置didUpdateWidget覆盖进行了检查,每次单击表单字段时都会触发该问题???为什么会这样呢?我还没有更新任何东西。
当我使用控制器显示两个箭头之间的日期值时,它没有改变,但是当我点击提交时,它应该被分配给它的值是错误的(出现的第一个日期)。因此,当didUpdate触发时,似乎是在设置我在扩展StatefulWidget类{}中设置的字段。
编辑:哇,键入最后一句话使我意识到我需要在扩展State <>的底层类中设置值。我在widget.activeDay中使用了它。
我想我仍然很好奇为什么文本表单字段会发生这种情况?
答案 0 :(得分:1)
单击文本字段将打开键盘。
这会更改屏幕尺寸,并导致MaterialApp
重建路线。
路由重建最终会在该特定小部件上调用didUpdateWidget
。