gpt4 book ai didi

android-alertdialog - Flutter 对话框以某种方式触发父小部件的导航器路由

转载 作者:IT王子 更新时间:2023-10-29 07:00:55 27 4
gpt4 key购买 nike

我的对话有问题。

我有一个主屏幕,其中包含导航到第二个屏幕的代码:

Navigator.push(context, MaterialPageRoute(
builder: (context) {
return SecondScreen("myData");
}
));

这将转到下一个屏幕。在第二个屏幕上,我最终显示了一个对话框,它正确显示,但是一旦我在对话框中单击 TextFormField,就会再次调用上面的构建器函数,重新创建我的 SecondScreen。然后,一旦我用 pop() 关闭对话框,它就会再次调用上面的代码。

我希望能够在不触发上述代码片段的情况下使用我的对话框。有谁知道该怎么做或为什么会这样?

编辑 - 这是显示对话框显示方式的代码:

StreamBuilder<String>(
stream: model.taxStream,
builder: (context, snapshot) {
return ListTile(
onTap: () async {
double taxAmount = await showEditAmountDialog(
context, "Tax", model.taxValue());
if (taxAmount != null) {
model.setTax(taxAmount);
}
},
title: Text("Tax"),
trailing: Text(snapshot.hasData ? snapshot.data : ""),
);
},
);

最佳答案

按照flutter开发者的说法,重建widgets是理想的场景。他们在 git issues 中提到了这一点.架构设计的设计应牢记小部件应该被重建。不再一次又一次地重建 widgets,是 flutter 提供的一种优化。但不应假定这是 flutter 中小部件的默认行为。默认行为是重建。希望这对您有所帮助!

关于android-alertdialog - Flutter 对话框以某种方式触发父小部件的导航器路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50547069/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com